boost可升级锁和可共享锁

首页 / 常见问题 / 低代码开发 / boost可升级锁和可共享锁
作者:数字化 发布时间:24-07-24 15:53 浏览量:7867
logo
织信企业级低代码开发平台
提供表单、流程、仪表盘、API等功能,非IT用户可通过设计表单来收集数据,设计流程来进行业务协作,使用仪表盘来进行数据分析与展示,IT用户可通过API集成第三方系统平台数据。
免费试用

本文来源自boost官网

https://www.boost.org/doc/libs/1_75_0/doc/html/interprocess/synchronization_mechanisms.html#interprocess.synchronization_mechanisms.sharable_upgradable_mutexes.upgradable_whats_a_mutex

可升级锁和可共享锁比普通的线程锁提供了更多的功能。一般编程的时候我们可以区分是自己的代码是要读数据还是写数据。如果只有部分线程需要写数据,那普通互斥锁可能会降低代码并行的效率。假如两个线程只需要读数据,那么这两个线程也没有办法并行运行。然而实际上,他俩并不会相互影响。

如果我们提供一种方式,允许并行读,禁止并行写,那么就可以解决这个问题。下面介绍几种线程锁

独占锁:与普通互斥锁类似,如果一个线程获取了独占锁,其他的线程均不能获取任何锁(包括独占锁或者其他锁), 如果任何其他线程拥有除独占锁以外的其他锁,试图获取独占锁的线程将被阻塞。需要写数据的线程应该获取独占锁。

共享锁:如果一个线程获取了共享锁,其他的线程则不能再获取独占锁。如果有线程获取了独占锁,那么其他想获取共享锁的线程将被阻塞。只需要读数据的线程应该获取这种锁。

可升级锁:如果一个线程获取了可升级锁,其他线程可以获取共享锁。如果一个线程获取了独占锁,或者是可升级锁,另一个想要获取可升级锁的线程将被阻塞。当一个线程获取了可升级锁,那么当其他线程想要获取一个与之有关的共享锁的时候,它会被确保升级为独占锁。这种特性适用于那种读操作占比高,但是还是会夹杂一些写操作的线程。当一个线程获取了可升级锁,其他线程可以获取共享锁。如果此线程在读取数据之后,又需要修改,当所有共享锁都被释放之后。这个可升级锁会原子性的升级为一个独占锁。之后这个线程可以修改数据,并且能保证在修改的时候没有其他线程修改过此数据。只有一个线程可以获取可升级锁

任务调度

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们微信:Informat_5 处理,核实后本网站将在24小时内删除侵权内容。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系邮箱:hopper@cornerstone365.cn 处理,核实后本网站将在24小时内删除。

最近更新

20款国内外主流低代码开发平台盘点
04-03 17:07
低代码开发大盘点:国内十大低代码平台
04-03 17:07
低代码开发平台:企业数字化转型的加速器
04-03 17:07
敏捷开发平台-微服务平台-织信官网-为你提供低代码组件开发
04-03 17:07
什么是低代码?低代码开发的意义在于何处?
04-03 17:07
国内低代码开发平台 TOP10 盘点
04-03 17:07
盘点:2025年国内比较主流的低代码开发平台有哪些?
04-03 17:07
2025国内十大热门低代码平台盘点,你用过哪一款?
04-03 17:07
新一代低代码开发平台,60%中国500强的选择
04-03 17:07

立即开启你的数字化管理

用心为每一位用户提供专业的数字化解决方案及业务咨询

  • 深圳市基石协作科技有限公司
  • 地址:深圳市南山区科技中一路大族激光科技中心909室
  • 座机:400-185-5850
  • 手机:137-1379-6908
  • 邮箱:sales@cornerstone365.cn
  • 微信公众号二维码

© copyright 2019-2024. 织信INFORMAT 深圳市基石协作科技有限公司 版权所有 | 粤ICP备15078182号

前往Gitee仓库
微信公众号二维码
咨询织信数字化顾问获取最新资料
数字化咨询热线
400-185-5850
申请预约演示
立即与行业专家交流