Page Speed Optimization Libraries
1.5.27.2
|
00001 // Copyright 2011 Google Inc. 00016 00017 #ifndef NET_INSTAWEB_UTIL_PUBLIC_PTHREAD_CONDVAR_H_ 00018 #define NET_INSTAWEB_UTIL_PUBLIC_PTHREAD_CONDVAR_H_ 00019 00020 #include <pthread.h> 00021 00022 #include "net/instaweb/util/public/condvar.h" 00023 #include "net/instaweb/util/public/basictypes.h" 00024 #include "net/instaweb/util/public/thread_system.h" 00025 #include "net/instaweb/util/public/pthread_mutex.h" 00026 00027 namespace net_instaweb { 00028 00029 class PthreadCondvar : public ThreadSystem::Condvar { 00030 public: 00032 explicit PthreadCondvar(PthreadMutex* mutex) 00033 : mutex_(mutex) { 00034 Init(); 00035 } 00036 virtual ~PthreadCondvar(); 00037 00038 virtual PthreadMutex* mutex() const { return mutex_; } 00039 00040 virtual void Signal(); 00041 virtual void Broadcast(); 00042 virtual void Wait(); 00043 virtual void TimedWait(int64 timeout_ms); 00044 00045 private: 00046 void Init(); 00047 00048 PthreadMutex* mutex_; 00049 pthread_cond_t condvar_; 00050 00051 DISALLOW_COPY_AND_ASSIGN(PthreadCondvar); 00052 }; 00053 00054 } 00055 00056 #endif ///< NET_INSTAWEB_UTIL_PUBLIC_PTHREAD_CONDVAR_H_