boost可升级锁和可共享锁

首页 / 常见问题 / 低代码开发 / boost可升级锁和可共享锁
作者:数字化 发布时间:07-24 15:53 浏览量:7796
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小时内删除。

最近更新

开发公司团队架构表怎么写
11-17 13:54
网站开发公司怎么做账
11-17 13:54
网站开发公司怎么找
11-17 13:54
做网站开发公司怎么样
11-17 13:54
如何选择软件定制开发公司
11-17 13:54
网站开发公司名称怎么起名
11-17 13:54
福州软件定制app开发公司怎么选
11-17 13:54
怎么选择专业网站开发公司
11-17 13:54
天津有什么好的APP外包开发公司吗
11-17 13:54

立即开启你的数字化管理

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

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

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

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