|
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Member functions | ||||
(C++20) | ||||
atomic_flag::wait (C++20) | ||||
(C++20) | ||||
(C++20) |
void wait(bool old,std::memory_order order= std::memory_order_seq_cst)constnoexcept; | (1) | (since C++20) (constexpr since C++26) |
void wait(bool old, std::memory_order order= | (2) | (since C++20) |
Performs atomic waiting operations. Behaves as if it repeatedly performs the following steps:
These functions are guaranteed to return only if value has changed, even if underlying implementation unblocks spuriously.
Iforder is notstd::memory_order_relaxed,std::memory_order_consume,std::memory_order_acquire orstd::memory_order_seq_cst, the behavior is undefined.
Contents |
| old | - | the value to check theatomic_flag's object no longer contains |
| order | - | memory order constraints to enforce |
This form of change-detection is often more efficient than simple polling or pure spinlocks.
Due to theABA problem, transient changes fromold to another value and back toold might be missed, and not unblock.
| This section is incomplete Reason: no example |
(C++20) | notifies at least one thread waiting on the atomic object (public member function)[edit] |
(C++20) | notifies all threads blocked waiting on the atomic object (public member function)[edit] |
(C++20) | notifies a thread blocked in atomic_flag_wait (function)[edit] |
(C++20) | notifies all threads blocked in atomic_flag_wait (function)[edit] |