00001
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