123456789101112131415161718192021222324252627282930313233343536373839404142 |
- #ifndef _FY_MUTEX_H_
- #define _FY_MUTEX_H_
- #include <pthread.h>
- namespace fy {
- class mutex {
- public:
- mutex() {
- pthread_mutex_init(&mutex_, NULL);
- }
- ~mutex() {
- pthread_mutex_destroy(&mutex_);
- }
- void lock() {
- pthread_mutex_lock(&mutex_);
- }
- void unlock() {
- pthread_mutex_unlock(&mutex_);
- }
- int trylock() {
- return pthread_mutex_trylock(&mutex_);
- }
- private:
- pthread_mutex_t mutex_;
- };
- template <typename T>
- class lock_guard {
- public:
- lock_guard(T& mutex):mutex_(mutex) {mutex_.lock();}
- ~lock_guard() {mutex_.unlock();}
- private:
- T& mutex_;
- };
- } /* namespace fy */
- #endif
|