Documentation Home >> Headers >> <condition_variable> Header >> std::condition_variable_any >> std::condition_variable_any::wait Member function

Wait until the std::condition_variable_any is woken by a call to notify_one() or notify_all(), or a spurious wake up.

template<typename Lockable>
void wait(Lockable& lock);

Preconditions:

Lockable meets the Lockable Requirements, and lock owns a lock.

Effects:

Atomically unlock the supplied lock object and block until the the thread is woken by a call to notify_one() or notify_all() by another thread, or the thread is woken spuriously. The lock object is locked again before the call to wait() returns.

Throws:

std::system_error if the effects cannot be achieved. If the lock object is unlocked during the call to wait(), it is locked again on exit, even if the function exits via an exception.

Note:

The spurious wake ups mean that a thread calling wait() may wake even though no thread has called notify_one() or notify_all(). It is therefore recommended that the overload of wait() that takes a predicate is used in preference where possible. Otherwise, it is recommended that wait() be called in a loop which tests the predicate associated with the condition variable.

Synchronization:

Calls to notify_one(), notify_all(), wait(), wait_for() and wait_until() on a single std::condition_variable_any instance are serialized. A call to notify_one() or notify_all() will only wake threads that started waiting prior to that call.

Header

#include <condition_variable>

See Also