1.1.2 MutexLock 与MutexLockGuard

2013-10-07 16:02:27 · 作者: · 浏览: 81

1.1.2 MutexLock 与MutexLockGuard

为了便于后文讨论,先约定两个工具类。我相信每个写C++(www.cppentry.com) 多线程程序的人都实现过或使用过类似功能的类,代码见§2.4。

MutexLock 封装临界区(critical section),这是一个简单的资源类,用RAII 手法[CCS,条款13] 封装互斥器的创建与销毁。临界区在Windows 上是struct CRITICAL_SECTION,是可重入的;在Linux 下是pthread_mutex_t,默认是不可重入的。MutexLock 一般是别的class 的数据成员。

MutexLockGuard 封装临界区的进入和退出,即加锁和解锁。MutexLockGuard 一般是个栈上对象,它的作用域刚好等于临界区域。

这两个class 都不允许拷贝构造和赋值,它们的使用原则见§2.1。