C++ boost共享锁 unique_lock shared_lock

Posted 软件工程小施同学

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++ boost共享锁 unique_lock shared_lock相关的知识,希望对你有一定的参考价值。

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; 

可以同时加多个读锁

但是一旦加写锁时,就不能加别的读锁和写锁

https://www.cnblogs.com/ityujian/archive/2013/04/30/3051865.html

以上是关于C++ boost共享锁 unique_lock shared_lock的主要内容,如果未能解决你的问题,请参考以下文章

C++ Boost库 多线程 线程锁mutex lock_guard unique_lockupgrade_lockupgrade_to_unique_lock实例

C++关于锁的总结

C++ 有 mutex.lock 为什么要用 lock_guard unique_lock

linux C++互斥锁std::lock_guard(轻锁)std::unique_lock(重锁)区别

linux C++互斥锁std::lock_guard(轻锁)std::unique_lock(重锁)区别

C++ boost::upgrade_lock upgrade_to_unique_lock 升级锁 是什么 怎么用