C++ 自带的临界区、Mutex等只支持唯一锁,这对性能是有很大影响的。
Boost提供共享锁功能,能够对读写区分加锁。 // 头文件 #include #include typedef boost::shared_mutex Lock; typedef boost::unique_lock WriteLock; typedef boost::shared_lock ReadLock;
Lock myLock; mutex对象定义
void ReadFunc() {
// 之前没有影响 ReadLock r_lock(myLock); // 加读锁
// 作用域到最后一行,也可以使用{}包含代码表示作用域 // 处理代码
}
void WriteFunc() { WriteLock w_lock(myLock); // 加写锁 // 处理代码 }
锁住的对象都是myLock;
可以同时加多个读锁,
但是一旦加写锁时,就不能加别的读锁和写锁
https://www.cnblogs.com/ityujian/archive/2013/04/30/3051865.html