00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00018
00019 #ifndef NET_INSTAWEB_UTIL_PUBLIC_PTHREAD_RW_MUTEX_H_
00020 #define NET_INSTAWEB_UTIL_PUBLIC_PTHREAD_RW_MUTEX_H_
00021
00022 #include <pthread.h>
00023 #include "net/instaweb/util/public/basictypes.h"
00024 #include "net/instaweb/util/public/thread_system.h"
00025
00026 namespace net_instaweb {
00027
00029 class PthreadRWLock : public ThreadSystem::RWLock {
00030 public:
00031 PthreadRWLock();
00032 virtual ~PthreadRWLock();
00033 virtual void Lock();
00034 virtual void Unlock();
00035 virtual void ReaderLock();
00036 virtual void ReaderUnlock();
00037
00038 private:
00039 pthread_rwlock_t rwlock_;
00040 pthread_rwlockattr_t attr_;
00041
00042 DISALLOW_COPY_AND_ASSIGN(PthreadRWLock);
00043 };
00044
00045 }
00046
00047 #endif ///< NET_INSTAWEB_UTIL_PUBLIC_PTHREAD_RW_MUTEX_H_