ConditionVarDirect

Inheritance:

Methods of ConditionVarDirect:

getMutex
MutexDirect &ConditionVarDirect::get_mutex(void) const;

Description: Returns the mutex associated with this condition variable.

output
void ConditionVarDirect::output(ostream &out) const;

Description: This method is declared virtual in ConditionVarDebug, but non-virtual in ConditionVarDirect.

signal
void ConditionVarDirect::signal(void);

Description: Informs one of the other threads who are currently blocked on wait() that the relevant condition has changed. If multiple threads are currently waiting, at least one of them will be woken up, although there is no way to predict which one. It is possible that more than one thread will be woken up.
The caller must be holding the mutex associated with the condition variable before making this call, which will not release the mutex.
If no threads are waiting, this is a no-op: the signal is lost.

wait
void ConditionVarDirect::wait(void);

Description: Waits on the condition. The caller must already be holding the lock associated with the condition variable before calling this function.
wait() will release the lock, then go to sleep until some other thread calls signal() on this condition variable. At that time at least one thread waiting on the same ConditionVarDirect will grab the lock again, and then return from wait().
It is possible that wait() will return even if no one has called signal(). It is the responsibility of the calling process to verify the condition on return from wait, and possibly loop back to wait again if necessary.
Note the semantics of a condition variable: the mutex must be held before wait() is called, and it will still be held when wait() returns. However, it will be temporarily released during the wait() call itself.