Page Speed Optimization Libraries
1.4.26.1
|
00001 // Copyright 2011 Google Inc. 00016 00017 #ifndef NET_INSTAWEB_UTIL_PUBLIC_PTHREAD_SHARED_MEM_H_ 00018 #define NET_INSTAWEB_UTIL_PUBLIC_PTHREAD_SHARED_MEM_H_ 00019 00020 #include <cstddef> 00021 #include <map> 00022 00023 #include "net/instaweb/util/public/abstract_shared_mem.h" 00024 #include "net/instaweb/util/public/basictypes.h" 00025 #include "net/instaweb/util/public/string.h" 00026 00027 namespace net_instaweb { 00028 class MessageHandler; 00029 00037 class PthreadSharedMem : public AbstractSharedMem { 00038 public: 00039 PthreadSharedMem(); 00040 virtual ~PthreadSharedMem(); 00041 00042 virtual size_t SharedMutexSize() const; 00043 00044 virtual AbstractSharedMemSegment* CreateSegment( 00045 const GoogleString& name, size_t size, MessageHandler* handler); 00046 00047 virtual AbstractSharedMemSegment* AttachToSegment( 00048 const GoogleString& name, size_t size, MessageHandler* handler); 00049 00050 virtual void DestroySegment(const GoogleString& name, 00051 MessageHandler* handler); 00052 00054 static void Terminate(); 00055 00056 private: 00057 typedef std::map<GoogleString, char*> SegmentBaseMap; 00058 00060 static SegmentBaseMap* AcquireSegmentBases(); 00061 00062 static void UnlockSegmentBases(); 00063 00067 static SegmentBaseMap* segment_bases_; 00068 00069 DISALLOW_COPY_AND_ASSIGN(PthreadSharedMem); 00070 }; 00071 00072 } 00073 00074 #endif ///< NET_INSTAWEB_UTIL_PUBLIC_PTHREAD_SHARED_MEM_H_