#include "pls/internal/base/spin_lock.h" namespace pls { namespace internal { namespace base { void spin_lock::lock() { int tries = 0; while (flag_.test_and_set(std::memory_order_acquire)) { tries++; if (tries % yield_at_tries_ == 0) { this_thread::yield(); } } } void spin_lock::unlock() { flag_.clear(std::memory_order_release); } } } }