C++ 自带的临界区、Mutex等只支持唯一锁,这对性能是有很大影响的。
Boost提供共享锁功能,能够对读写区分加锁。在系统性能优化时,是一个需要考虑的问题。
// 头文件 #include <boost/thread/shared_mutex.hpp> #include <boost/thread.hpp> typedef boost::shared_mutex Lock; typedef boost::unique_lock<Lock> WriteLock; typedef boost::shared_lock<Lock> ReadLock;Lock myLock; mutex对象定义
void ReadFunc()
{ ReadLock r_lock(myLock); // 加读锁 // 处理代码 }void WriteFunc()
{ WriteLock w_lock(myLock); // 加写锁 // 处理代码 } 锁住的对象都是myLock; 可以同时加多个读锁,但是一旦加写锁时,就不能加别的读锁和写锁