00001
00002
00003
00004
00005
00006
00007
00008
00009 #ifndef MUTEX_INCLUDEDEF_H
00010 #define MUTEX_INCLUDEDEF_H
00011
00012 #include <pthread.h>
00013 #include <string>
00014
00015 const unsigned int INFINITE = 0;
00016
00017
00018 class Mutex
00019 {
00020 private:
00021 pthread_mutex_t m_hMutex;
00022
00023 public:
00024 Mutex()
00025 {
00026 pthread_mutex_init(&m_hMutex, 0);
00027 }
00028
00029 Mutex( std::string sName)
00030 {
00031
00032 pthread_mutex_init(&m_hMutex, 0);
00033 }
00034
00035 ~Mutex()
00036 {
00037 pthread_mutex_destroy(&m_hMutex);
00038 }
00039
00042 bool lock( unsigned int uiTimeOut = INFINITE )
00043 {
00044 int ret;
00045
00046 if (uiTimeOut == INFINITE)
00047 {
00048 ret = pthread_mutex_lock(&m_hMutex);
00049 }
00050 else
00051 {
00052 timespec abstime = { time(0) + uiTimeOut, 0 };
00053 ret = pthread_mutex_timedlock(&m_hMutex, &abstime);
00054 }
00055
00056 return ! ret;
00057 }
00058
00059 void unlock()
00060 {
00061 pthread_mutex_unlock(&m_hMutex);
00062 }
00063 };
00064
00065 #endif
00066