Condition.h

00001 // $Id: Condition.h 21 2010-09-05 04:18:17Z cschwarz1 $
00002 
00003 #ifndef BASE_CONDITION_H
00004 #define BASE_CONDITION_H
00005 
00006 #include "Mutex.h"
00007 
00008 namespace base {
00010 
00014     class PPBASE_EXPORT Condition {
00015     public:
00017         Condition(Mutex *mutex = NULL, bool own = false);
00018 
00020         ~Condition();
00021 
00023         void lock();
00024 
00026 
00029         void signal(bool broadcast = false);
00030 
00032         void unlock();
00033 
00035 
00040         bool wait(int timeout = 0, bool dolock = false);
00041 
00042     protected:
00043     #ifdef _WIN32
00044         HANDLE          _cond;   
00045     #else
00046         pthread_cond_t  _cond;   
00047     #endif
00048         Mutex          *_mutex;  
00049         bool            _own;    
00050 
00052         DISALLOW_COPY_CONSTRUCTOR_AND_ASSIGNMENT(Condition);
00053     };
00054 }
00055 
00056 #endif