1. MutexLock类
MutexLock类是对互斥量的封装,使用栈上对象MutexLockGuard来管理mutex的加锁与释放。栈上对象在退出对应的代码段之后会自动释放,随之,锁也会被自动释放。使用方法如下:
class Foo
{
public:
int size() const;
private:
mutable MutexLock mutex_;
std::vector<int> data_ GUARDED_BY(mutex_);
};
int Foo::size() const
{
MutexLockGuard lock(mutex_);
return data_.size();
}
Mutex.h的部分源码如下所示:
class CAPABILITY("mutex") MutexLock : noncopyable
{
public:
// 构造函数中初始化mutex变量
MutexLock()
: holder_(0)
{
MCHECK(pthread_mutex_init(&mutex_, NULL));
}
// 析构函数中销毁mutex变量
~MutexLock()
{
assert(holder_ == 0);
MCHECK(pthread_mutex_destroy(&mutex_));
}
// 判断加锁的对象是否是当前线程
bool isLockedByThisThread(