自动锁

来源:互联网 发布:java定义json字符串 编辑:程序博客网 时间:2024/04/28 19:57

使用pthread实现自动锁:

#include "pthread.h"class Mutex{public:Mutex(void);virtual ~Mutex(void);public:void lock();void unLock();protected:pthread_mutex_t m_pMutex;};class AutoLock{public:AutoLock(Mutex &mutex);~AutoLock();protected:Mutex& mMutex;};


#include "Mutex.h"Mutex::Mutex(void){pthread_mutexattr_t attr;pthread_mutexattr_init(&attr);pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE_NP);pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE);pthread_mutex_init(&m_pMutex, &attr);pthread_mutexattr_destroy(&attr);}Mutex::~Mutex(void){pthread_mutex_destroy(&m_pMutex);}void Mutex::lock(){(void)pthread_mutex_lock(&m_pMutex);}void Mutex::unLock(){(void)pthread_mutex_unlock(&m_pMutex);}AutoLock::AutoLock(Mutex &mutex):mMutex(mutex){mMutex.lock();}AutoLock::~AutoLock(){mMutex.unLock();}