Mutex.h++
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef __ccxx_Mutex_hxx
00024 #define __ccxx_Mutex_hxx
00025
00026 #include <commonc++/Common.h++>
00027 #include <commonc++/Lock.h++>
00028
00029 #ifdef CCXX_OS_POSIX
00030 #include <pthread.h>
00031 #endif
00032
00033 namespace ccxx {
00034
00049 class COMMONCPP_API Mutex : public Lock
00050 {
00051 friend class CondVar;
00052
00053 public:
00054
00061 Mutex(bool recursive = false) throw();
00062
00066 ~Mutex() throw();
00067
00069 void lock() throw();
00070
00081 bool tryLock(timespan_ms_t timeout = 0) throw();
00082
00084 void unlock() throw();
00085
00087 inline bool isRecursive() const throw()
00088 { return(_recursive); }
00089
00091 static bool supportsTimedLocks() throw();
00092
00093 protected:
00094
00096 #ifdef CCXX_OS_WINDOWS
00097 HANDLE _mutex;
00098 #else
00099 pthread_mutex_t _mutex;
00100 #endif
00101
00103 private:
00104
00105 bool _recursive;
00106
00107 CCXX_COPY_DECLS(Mutex);
00108 };
00109
00110 };
00111
00112 #endif // __ccxx_Mutex_hxx
00113
00114