The ConditionVariable class is a synchronization primitive that allows threads to wait until a particular condition occurs. More...
#include <ConditionVariable.h>
Public Member Functions | |
| ConditionVariable (Mutex &mutex) | |
| Create and initialize a ConditionVariable object. More... | |
| void | wait () |
| Wait for a notification. More... | |
| bool | wait_until (uint64_t millisec) |
| Wait for a notification until the specified time. More... | |
| bool | wait_for (uint32_t millisec) |
| Wait for a notification or timeout. More... | |
| void | notify_one () |
| Notify one waiter on this condition variable that a condition changed. More... | |
| void | notify_all () |
| Notify all waiters on this condition variable that a condition changed. More... | |
| ~ConditionVariable () | |
| ConditionVariable destructor. More... | |
The ConditionVariable class is a synchronization primitive that allows threads to wait until a particular condition occurs.
Use the condition variable in conjunction with a mutex to safely wait for or notify waiters of condition changes to a resource accessible by multiple threads.
The thread that intends to wait on a ConditionVariable must:
wait, wait_for or wait_until. While the thread is waiting, the mutex is unlocked.wait_for and wait_until the timeout expires, the thread is awakened.The thread that intends to notify a ConditionVariable must:
notify_one or notify_all on the condition variable.All threads waiting on the condition variable wake when ConditionVariable::notify_all is called. At least one thread waiting on the condition variable wakes when ConditionVariable::notify_one is called.
While a thread is waiting for notification of a ConditionVariable, it releases the lock held on the mutex. The ConditionVariable reacquires the mutex lock before exiting the wait function.
ConditionVariable::notify_one is unspecified if there are multiple waiters.ConditionVariable::notify_one or ConditionVariable::notify_all is called and there are one or more waiters, and one or more threads attempting to acquire the condition variable's mutex, the order in which the mutex is acquired is unspecified.ConditionVariable::notify_all is called is undefined.ConditionVariable::wait and ConditionVariable::wait_for is undefined if the condition variable's mutex is locked more than once by the calling thread.Example:
Definition at line 152 of file ConditionVariable.h.