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++ 有 mutex.lock 为什么要用 lock_guard unique_lock
linux C++互斥锁std::lock_guard(轻锁)std::unique_lock(重锁)区别