Page Speed Optimization Libraries  1.4.26.1
net/instaweb/util/public/pthread_condvar.h
Go to the documentation of this file.
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_
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines