14 std::atomic<bool> m_locked{
false};
25 bool expected =
false;
26 while (!m_locked.compare_exchange_weak(
29 std::memory_order_acquire,
30 std::memory_order_relaxed)) {
32 std::this_thread::yield();
38 bool expected =
false;
39 return m_locked.compare_exchange_strong(expected,
true, std::memory_order_acquire);
42 void unlock() { m_locked.store(
false, std::memory_order_release); }