#ifndef HGL_MULTI_THREAD_CONDITION_VARIABLE_INCLUDE #define HGL_MULTI_THREAD_CONDITION_VARIABLE_INCLUDE #include namespace hgl { class ThreadMutex; class RWLock; /** * 条件变量 */ class CondVar { void *cond_var; public: CondVar(); virtual ~CondVar(); bool Wait(ThreadMutex *,double time=0); ///<释放指定ThreadMutex,在条件符合后重新锁定并结束等待,0表示永久 #if HGL_OS == HGL_OS_Windows bool Wait(RWLock *,double time=0,bool read=false); ///<释放指定RWLock,在条件符合后重新锁定并结束等待。(注:此函数仅在Windows 2008/Vista及更新版本中支持,Linux/BSD版不支持) #endif//HGL_OS == HGL_OS_Windows void Signal(); ///<发送一个信号,让一个等待的线程解锁 void Broadcast(); ///<广播一个信号,让所有等待的线程都解锁 };//class CondVar }//namespace hgl #endif//HGL_MULTI_THREAD_CONDITION_VARIABLE_INCLUDE