- Lock類是對互斥量的一層對象化包裝
- ScopedLock類是模仿C++ lock_guard自定義的區間鎖,作用同lock_guard一模一樣
lock
class Lock
{
public:
Lock()
{
pthread_mutex_init(&this->handle, NULL);
}
~Lock()
{
pthread_mutex_destroy(&this->handle);
}
void acquire()
{
pthread_mutex_lock(&this->handle);
}
void release()
{
pthread_mutex_unlock(&this->handle);
}
protected:
pthread_mutex_t handle;
};
ScopedLock
class ScopedLock
{
public:
ScopedLock(Lock &instance) : inst(instance)
{
this->inst.acquire();
}
~ScopedLock()
{
this->inst.release();
}
protected:
ScopedLock &operator =(const ScopedLock &);
Lock &inst;
};