Sha256: a37e4f643ba58a3a200b7e32fbf13d69d8fb8751b5caba136c7ff4c8f6d1762d
Contents?: true
Size: 1.29 KB
Versions: 3
Compression:
Stored size: 1.29 KB
Contents
#ifndef LIMONP_MUTEX_LOCK_HPP #define LIMONP_MUTEX_LOCK_HPP #include <pthread.h> #include "NonCopyable.hpp" #include "HandyMacro.hpp" namespace Limonp { class MutexLock: NonCopyable { private: pthread_mutex_t mutex_; public: pthread_mutex_t* getPthreadMutex() { return &mutex_; } public: MutexLock() { LIMONP_CHECK(!pthread_mutex_init(&mutex_, NULL)); } ~MutexLock() { LIMONP_CHECK(!pthread_mutex_destroy(&mutex_)); } private: void lock() { LIMONP_CHECK(!pthread_mutex_lock(&mutex_)); } void unlock() { LIMONP_CHECK(!pthread_mutex_unlock(&mutex_)); } friend class MutexLockGuard; }; class MutexLockGuard: NonCopyable { public: explicit MutexLockGuard(MutexLock & mutex) : mutex_(mutex) { mutex_.lock(); } ~MutexLockGuard() { mutex_.unlock(); } private: MutexLock & mutex_; }; #define MutexLockGuard(x) assert(false); } #endif
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
jieba_rb-0.0.5 | ext/cppjieba/src/Limonp/MutexLock.hpp |
jieba_rb-0.0.2 | ext/cppjieba/src/Limonp/MutexLock.hpp |
jieba_rb-0.0.1 | ext/cppjieba/src/Limonp/MutexLock.hpp |