A condition variable enables threads to atomically block and test the condition under the protection of a mutual exclu- sion lock (mutex) until the condition is satisfied. That is, the mutex must have been held by the thread before calling wait or signal on the condition. If the condition is false, a thread blocks on a condition variable and atomically releases the mutex that is waiting for the condition to change. If another thread changes the condition, it may wake up waiting threads by signaling the associated condition variable. The waiting threads, upon awakening, reacquire the mutex and re-evaluate the condition.
#include <ace/Synch.h>
class ACE_Condition_Thread_Mutex {
public:
ACE_Condition_Thread_Mutex ( const ACE_Thread_Mutex &m, LPCTSTR name = 0, void *arg = 0 );
ACE_Condition_Thread_Mutex ( const ACE_Thread_Mutex &m, ACE_Condition_Attributes &attributes, LPCTSTR name = 0, void *arg = 0 );
~ACE_Condition_Thread_Mutex (void);
int remove (void);
int wait (const ACE_Time_Value *abstime);
int wait (void);
int wait ( ACE_Thread_Mutex &mutex, const ACE_Time_Value *abstime = 0 );
int signal (void);
int broadcast (void);
ACE_Thread_Mutex &mutex (void);
void dump (void) const;
ACE_ALLOC_HOOK_DECLARE;
protected:
ACE_cond_t cond_;
ACE_Thread_Mutex &mutex_;
int removed_;
private:
void operator= (const ACE_Condition_Thread_Mutex &);
ACE_Condition_Thread_Mutex (const ACE_Condition_Thread_Mutex &);
};
void operator= (const ACE_Condition_Thread_Mutex &);
ACE_Condition_Thread_Mutex (const ACE_Condition_Thread_Mutex &);