#include <arccore/concurrency/SpinLock.h>
Classes | |
| class | ScopedLock |
| class | ManualLock |
Public Types | |
| enum class | eMode : uint8_t { None , Auto , FullSpin , SpinAndMutex } |
| Spinlock mode. The default is 'Auto'. More... | |
Public Member Functions | |
| SpinLock () | |
| Default SpinLock. | |
| SpinLock (eMode mode) | |
| SpinLock with the mode. | |
Friends | |
| class | ScopedLock |
| class | ManualLock |
Definition at line 37 of file arccore/src/concurrency/arccore/concurrency/SpinLock.h.
|
strong |
Spinlock mode. The default is 'Auto'.
| Enumerator | |
|---|---|
| Auto | Automatic choice. If Concurrency::getThreadImplementation()->isMultiThread() is true, then the mode is SpinAndMutex. Otherwise, the mode is None. |
| FullSpin | Always uses a spinlock. This type is faster if there is very little contention, but performance is very poor otherwise. |
| SpinAndMutex | SpinLock then mutex. Performs a spinlock then yields (std::this_thread::yield()) if it takes too long. This mode is only available if C++20 is used. Otherwise, it is equivalent to FullSpin. |
Definition at line 80 of file arccore/src/concurrency/arccore/concurrency/SpinLock.h.
| Arcane::SpinLock::SpinLock | ( | ) |
| Arcane::SpinLock::SpinLock | ( | eMode | mode | ) |
SpinLock with the mode.
Definition at line 47 of file SpinLock.cc.
| Arcane::SpinLock::~SpinLock | ( | ) |
Definition at line 57 of file SpinLock.cc.
|
friend |
Definition at line 75 of file arccore/src/concurrency/arccore/concurrency/SpinLock.h.
|
friend |
Definition at line 74 of file arccore/src/concurrency/arccore/concurrency/SpinLock.h.