代码改变世界

boost共享锁

2013-04-30 14:07  鉴于  阅读(1161)  评论(0编辑  收藏  举报

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;  可以同时加多个读锁,但是一旦加写锁时,就不能加别的读锁和写锁