1. MutexLock类说明
1. 功能
-
muduo锁操作类,C++11标准库已经有锁了
-
这里面一堆宏定义有点头皮发麻,不过应该是根据编译器不同做的一些不同的宏定义,使用gcc的话定义的为空,所以这些宏定义一般可以忽略
2. 继承
- noncopyable
2. 成员变量说明
- mutex_
- 锁变量
- holder_
- 标识进程id,表示锁的是那个进程,在上锁的时候用tid()方法获得id对其赋值
- Condition为友元类,条件变量类
3. 成员函数说明
1. 普通
- 构造函数
- 初始化锁
- 析构函数
- 断言此时的holder_==0,释放锁资源
- isLockedByThisThread()
- 判断当前线程是否是被锁的
- assertLocked()
- 断言当前线程是被锁的
- lock()
- 上锁
- unlock()
- 解锁
- getPthreadMutex()
- 获得锁变量
2. 私有函数
- unassignHolder()
- 另holder_=0
- assignHolder()
- 令holder_的值为当前进程id
- 这个和上个函数分别在加锁,解锁时使用,也是私有函数
4. 内部类UnassignGuard
1. 变量
- owener_
- MutexLock& 类型变量
2. 函数
- 只有构造和析构
- 实际上就是对与holder_的RAII,什么是RAII呢,自己搜吧
- 这个类主要在条件变量中用,下一篇会讲到
5. MutexLockGuard类
- MutexLock的RAII,懂了RAII就很好理解了