33 if (!
lock_.exchange(
true, std::memory_order_acquire)) {
37 while (
lock_.load(std::memory_order_relaxed)) {
49 return !
lock_.load(std::memory_order_relaxed) &&
50 !
lock_.exchange(
true, std::memory_order_acquire);
53 void unlock()
override {
lock_.store(
false, std::memory_order_release); }
56 std::atomic<bool>
lock_ = {
false};