14#include "arccore/concurrency/SpinLock.h"
16#include "arccore/concurrency/NullThreadImplementation.h"
17#include "arccore/concurrency/SpinLock.h"
23#if __cpp_lib_atomic_wait >= 201907L
24#define ARCCORE_HAS_ATOMIC_WAIT
39 bool is_need_sync = Concurrency::getThreadImplementation()->isMultiThread();
68 while (m_spin_lock.test_and_set(std::memory_order_acquire)) {
73#ifdef ARCCORE_HAS_ATOMIC_WAIT
74 m_spin_lock.wait(
true, std::memory_order_relaxed);
83 m_spin_lock.clear(std::memory_order_release);
84#ifdef ARCCORE_HAS_ATOMIC_WAIT
90 m_spin_lock.notify_one();
#define ARCCORE_DEFINE_REFERENCE_COUNTED_CLASS(class_name)
Macro pour définir les méthodes et types une classe qui utilise un compteur de référence.
SpinLock()
SpinLock par défaut.
eMode
Mode du spinlock. Le défaut est 'Auto'.
@ SpinAndMutex
SpinLock puis mutex.
Espace de nom de Arccore.