std::condition_variable_any::notify_all (3) - Linux Manuals
std::condition_variable_any::notify_all: std::condition_variable_any::notify_all
NAME
std::condition_variable_any::notify_all - std::condition_variable_any::notify_all
Synopsis
void notify_all() noexcept; (since C++11)
Unblocks all threads currently waiting for *this.
Parameters
(none)
Return value
(none)
Notes
The effects of notify_one()/notify_all() and each of the three atomic parts of wait()/wait_for()/wait_until() (unlock+wait, wakeup, and lock) take place in a single total order that can be viewed as modification_order of an atomic variable: the order is specific to this individual condition_variable. This makes it impossible for notify_one() to, for example, be delayed and unblock a thread that started waiting just after the call to notify_one() was made.
The notifying thread does not need to hold the lock on the same mutex as the one held by the waiting thread(s); in fact doing so is a pessimization, since the notified thread would immediately block again, waiting for the notifying thread to release the lock.
Example
// Run this code
Possible output:
See also
notify_one (public member function)