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 #ifndef MUTEX_INCLUDEDEF_H
00019 #define MUTEX_INCLUDEDEF_H
00020
00021 #include <pthread.h>
00022
00023 const unsigned int INFINITE = 0;
00024
00025
00026 class Mutex
00027 {
00028 private:
00029 pthread_mutex_t m_hMutex;
00030
00031 public:
00032 Mutex()
00033 {
00034 pthread_mutex_init(&m_hMutex, 0);
00035 }
00036
00037 Mutex( std::string sName)
00038 {
00039
00040 pthread_mutex_init(&m_hMutex, 0);
00041 }
00042
00043 ~Mutex()
00044 {
00045 pthread_mutex_destroy(&m_hMutex);
00046 }
00047
00050 bool lock( unsigned int uiTimeOut = INFINITE )
00051 {
00052 int ret;
00053
00054 if (uiTimeOut == INFINITE)
00055 {
00056 ret = pthread_mutex_lock(&m_hMutex);
00057 }
00058 else
00059 {
00060 timespec abstime = { time(0) + uiTimeOut, 0 };
00061 ret = pthread_mutex_timedlock(&m_hMutex, &abstime);
00062 }
00063
00064 return ! ret;
00065 }
00066
00067 void unlock()
00068 {
00069 pthread_mutex_unlock(&m_hMutex);
00070 }
00071 };
00072
00073 #endif
00074