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相关推荐
- 多线程服务器的常用编程模型 .
转自: 陈硕 (giantchen_AT_gmail) : http://blog.csdn.net/solstice/article/details/5307710 本文主要讲我个人在多线程开发方面 ...
- 单体模式singleton
在c++实现单体模式和c#,java有些不同 .h class Param { public:static Param& GetIntance(){return m_param;}static ...
- php框架费尔康,GitHub - majixian/study-phalcon: phalcon(费尔康)框架学习笔记
phalcon(费尔康)框架学习笔记 以实例程序invo为例(invo程序放在网站根目录下的invo文件夹里,推荐php版本>=5.4) 环境不支持伪静态网址时的配置 第一步: 在app\con ...
- boost::shared_lock相关的测试程序
boost::shared_lock相关的测试程序 实现功能 C++实现代码 实现功能 boost::shared_lock相关的测试程序 C++实现代码 #include <boost/thr ...
- (十一)boost库之多线程间通信
1.互斥锁 在编程中,引入了对象互斥锁的概念,来保证共享数据操作的完整性.每个对象都对应于一个可称为" 互斥锁" 的标记,这个标记用来保证在任一时刻,只能有一个线程访问该对象. # ...
- 【Boost】boost库中thread多线程详解2——mutex与lock
1. mutex对象类 mutex类主要有两种:独占式与共享式的互斥量. ▲ 独占式互斥量: mutex: 独占式的互斥量,是最简单最常用的一种互斥量类型 try_mutex: 它是mutex的同义词 ...
- 共享锁和排它锁---C++17 多线程
共享锁和排它锁-C++17 多线程 读写锁把对共享资源的访问者划分成读者和写者,读者只对共享资源进行读访问,写者则需要对共享资源进行写操作.C++17开始,标准库提供了shared_mutex类(在这 ...
- boost互斥锁_boost锁使用总结
boost锁的概述: boost库中提供了mutex类与lock类,通过组合可以轻易的构建读写锁与互斥锁. 举个通俗的例子,如果共享资源是一个自动锁住的房间,互斥体是钥匙,进入房间必须取钥匙,离开房间 ...
- boost::lockfree::queue多线程读写实例
最近的任务是写一个多线程的东西,就得接触多线程队列了,我反正是没学过分布式的,代码全凭感觉写出来的,不过运气好,代码能够work= = 话不多说,直接给代码吧,一个多消费者,多生产者的模式.假设我的任 ...
- C++雾中风景12:聊聊C++中的Mutex,以及拯救生产力的Boost
笔者近期在工作之中编程实现一个Cache结构的封装,需要使用到C++之中的互斥量Mutex,于是花了一些时间进行了调研.(结果对C++标准库很是绝望....)最终还是通过利用了Boost库的share ...
最新文章
- 机器学习面试题集 - 详解四种交叉验证方法
- 矢量合成和分解的法则_高考复习整理力的合成和分解
- B站直播中HLS和去中心化P2P的实际应用
- 【Java】统计字符个数
- Java类加载文章2(z)
- python免费网课-Python网课推荐——免费学习Python编程
- 【NOI OpenJudge】【1.3】编程基础之算术表达式与顺序执行
- [EMNLP18]用序列标注来进行成分句法分析
- 一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字(简单易懂)
- LintCode—删除链表中的元素(452)
- C# 文件与Base64的相互转换
- LCD12864驱动显示程序
- html页面获取扫码枪参数,js获取扫码枪输入数据的方法
- 联想笔记本更换硬盘/改Win 7系统安装过程中报0x000000A5蓝屏
- 叶聪:朋友圈背后的计算机视觉技术与应用
- 从删库到跑路,DBA 如何防止被淘汰?
- 隐函数存在定理1及求导公式_20160505
- Thread类实现多线程
- java ora-12505_Java Oracle本地主机连接错误(ORA-12505)
- 鸿蒙系统安装第三方应用是什么,网友表示:鸿蒙最新系统可以通过连接U盘安装第三方软件了...
热门文章
- PHP专家陪练营试听课程下载
- MySQL不能插入中文字段的解决办法
- 【学习笔记】深入理解js原型和闭包(13)——【作用域】和【上下文环境】
- ActiveMQ 无法启动 提示端口被占用 解决方案
- 元素“UpdateProgress”不是已知元素。原因可能是网站中存在编译错误
- 拓端tecdat|R语言:逻辑回归ROC曲线对角线分析过程及结果
- 拓端tecdat|R语言GARCH-DCC模型和DCC(MVT)建模估计
- Python脚本实现深大校园网网页登陆
- ajax无法访问,Ajax不能跨域访问的解决方案
- 学计算机自考商务英语本科好吗,自考本科商务英语专业真的难吗