SpinLock.
Plus de détails...
#include </__w/arcaneframework.github.io/arcaneframework.github.io/framework/arccore/src/concurrency/arccore/concurrency/SpinLock.h>
◆ eMode
Mode du spinlock. Le défaut est 'Auto'.
Valeurs énumérées |
---|
Auto | Choix automatique.
Si Concurrency::getThreadImplementation()->isMultiThread() est vrai, alors le mode est SpinAndMutex. Sinon, le mode est None.
|
FullSpin | Utilise toujours un spinlock.
Ce type est plus rapide s'il y a très peu de contention mais les performances sont très mauvaises dans le cas contraire.
|
SpinAndMutex | SpinLock puis mutex.
Effectue un spinlock puis rend la main (std::this_thread::yield()) si cela dure trop longtemps. Ce mode n'est disponible que si on utilise le C++20. Sinon, il est équivalent à FullSpin.
|
Définition à la ligne 81 du fichier arccore/src/concurrency/arccore/concurrency/SpinLock.h.
◆ SpinLock() [1/2]
Arccore::SpinLock::SpinLock |
( |
| ) |
|
◆ SpinLock() [2/2]
Arccore::SpinLock::SpinLock |
( |
eMode |
mode | ) |
|
◆ ~SpinLock()
Arccore::SpinLock::~SpinLock |
( |
| ) |
|
◆ _doLock()
void Arccore::SpinLock::_doLock |
( |
| ) |
|
|
inlineprivate |
◆ _doLockReal()
void Arccore::SpinLock::_doLockReal |
( |
| ) |
|
|
private |
◆ _doUnlock()
void Arccore::SpinLock::_doUnlock |
( |
| ) |
|
|
inlineprivate |
◆ _doUnlockReal()
void Arccore::SpinLock::_doUnlockReal |
( |
| ) |
|
|
private |
◆ ManualLock
◆ ScopedLock
◆ m_mode
◆ m_spin_lock
std::atomic_flag Arccore::SpinLock::m_spin_lock = ATOMIC_FLAG_INIT |
|
private |
La documentation de cette classe a été générée à partir des fichiers suivants :