C++互拆锁

来源:互联网 发布:淘宝怎么给子账号授权 编辑:程序博客网 时间:2024/06/05 20:30

CLock.h

#ifndef __CLOCK_H__#define __CLOCK_H__#include <pthread.h>class ILock {public:virtual ~ILock() {};virtual void Lock() const = 0;virtual void UnLock() const = 0;};class CMutex : public ILock {public:CMutex();~CMutex();virtual void Lock() const;virtual void UnLock() const;private:mutable pthread_mutex_t m_mutex;};class CMyLock {public:CMyLock(const ILock&);~CMyLock();private:const ILock& m_lock;};#endif


CLock.cpp

#include "CLock.h"CMutex::CMutex() {pthread_mutex_init(&m_mutex, NULL);}CMutex::~CMutex() {pthread_mutex_destroy(&m_mutex);}void CMutex::Lock() const {pthread_mutex_lock(&m_mutex);}void CMutex::UnLock() const{pthread_mutex_unlock(&m_mutex);}CMyLock::CMyLock(const ILock& m): m_lock(m){m_lock.Lock();}CMyLock::~CMyLock() {m_lock.UnLock();}