00001
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031 #ifndef LOG4SENDPP_MUTEX_H
00032 #define LOG4SENDPP_MUTEX_H
00033
00034 #include <log4sendpp/log4sendpp.h>
00035
00036 #ifdef __WIN32__
00037 #include <windows.h>
00038 #endif
00039
00040 #ifdef __unix__
00041 #include <pthread.h>
00042 #endif
00043
00044
00045 LOG4SENDPP_NS_START
00046
00047
00050 class LOG4SENDPP_API_DECL0 Mutex
00051 {
00052 public:
00053
00056 class LOG4SENDPP_API_DECL0 Locker
00057 {
00058 public:
00059
00063 Locker(Mutex &mtx);
00064
00067 ~Locker();
00068
00069 private:
00070
00071 Mutex *mutex;
00072 };
00073
00076 class LOG4SENDPP_API_DECL0 TryLocker
00077 {
00078 public:
00079
00083 TryLocker(Mutex &mtx);
00084
00087 ~TryLocker();
00088
00092 bool isLocked();
00093
00094 private:
00095
00096 Mutex *mutex;
00097 bool locked;
00098 };
00099
00102 Mutex();
00103
00106 ~Mutex();
00107
00110 void lock();
00111
00114 void unlock();
00115
00119 bool tryLock();
00120
00121 private:
00122
00123 #ifdef __WIN32__
00124 typedef HANDLE Handle;
00125 HANDLE handle;
00126 #else
00127 typedef pthread_mutex_t Handle;
00128 pthread_mutex_t handle;
00129 #endif
00130 };
00131
00132
00133 LOG4SENDPP_NS_END
00134
00135
00136 #endif // LOG4SENDPP_MUTEX_H