00001 00026 /* === S T A R T =========================================================== */ 00027 00028 #ifndef __ETL__MUTEX_PTHREADS_SIMPLE_H_ 00029 #define __ETL__MUTEX_PTHREADS_SIMPLE_H_ 00030 00031 /* === H E A D E R S ======================================================= */ 00032 00033 #include <pthread.h> 00034 00035 /* === M A C R O S ========================================================= */ 00036 00037 /* === C L A S S E S & S T R U C T S ======================================= */ 00038 00039 _ETL_BEGIN_NAMESPACE 00040 00041 class mutex 00042 { 00043 pthread_mutex_t mtx; 00044 public: 00045 mutex() { pthread_mutex_init(&mtx,NULL); } 00046 ~mutex() { pthread_mutex_destroy(&mtx); } 00047 void lock_mutex() { pthread_mutex_lock(&mtx); } 00048 void unlock_mutex() { pthread_mutex_unlock(&mtx); } 00049 00051 class lock 00052 { 00053 mutex *_mtx; 00054 public: 00055 lock(mutex &x):_mtx(&x) { _mtx->lock_mutex(); } 00056 ~lock() { _mtx->unlock_mutex(); } 00057 }; 00058 }; 00059 00060 _ETL_END_NAMESPACE 00061 00062 /* === E N D =============================================================== */ 00063 00064 #endif