线程同步和互斥的区别在哪_线程同步和互斥的区别在哪里

线程同步和互斥的区别在哪_线程同步和互斥的区别在哪里多线程编程互斥与同步的概念和区别对于程序员来说线程安全问题是需要长期的一个编程开发问题,而今天我们就通过案例分析来了解一下,多线程编程互斥与同步的概念和区别。互斥概念多线程执行共享变量的这段代码可能会导致竞争状态,因此我们将此段代码称为临界区(c

多线程编程互斥与同步的概念和区别
  对于程序员来说线程安全问题是需要长期的一个编程开发问题,而今天我们就通过案例分析来了解一下,多线程编程互斥与同步的概念和区别。

  互斥概念

  多线程执行共享变量的这段代码可能会导致竞争状态,因此我们将此段代码称为临界区(criticalsection),它是执行共享资源的代码片段,一定不能给多线程同时执行。

  所以我们希望这段代码是互斥(mutualexclusion)的,也就说执行临界区(criticalsection)代码段的只能有一个线程,其他线程阻塞等待,达到排队效果。

  互斥并不只是针对多线程的竞争条件,同时还可用于多进程,避免共享资源混乱。

  同步概念

  互斥解决了「多进程/线程」对临界区使用的问题,但是它没有解决「多进程/线程」协同工作的问题

  我们都知道在多线程里,每个线程一定是顺序执行的,它们各自独立,以不可预知的速度向前推进,但有时候我们希望多个线程能密切合作,以实现一个共同的任务。

  所谓同步,就是「多进程/线程间」在一些关键点上可能需要互相等待与互通消息,这种相互制约的等待与互通信息称为「进程/线程」同步。

  举个例,有两个角色分别是研发、质量管控,质量管控测试功能,需要等研「发完成开发」,研发要修bug也要等质量管控「测试完成提交BUG」,正常流程是研发完成开发,通知质量管控进行测试,质量管控测试完成,通知研发人员修复bug。

  互斥与同步的区别

  互斥:某一资源同时只允许一个访问者对其进行访问,具有性和排它性。但互斥无法限制访问者对资源的访问顺序,即访问是无序的。

  「操作A和操作B不能在同一时刻执行」

  同步:互斥的基础上,通过其它机制实现访问者对资源的有序访问。在大多数情况下,同步已经实现了互斥。

  「操作A应在操作B之前执行」,「操作C必须在操作A和操作B都完成之后才能执行」

  显然,同步是一种更为复杂的互斥,而互斥是一种特殊的同步。也就是说互斥是两个线程之间不可以同时运行,他们会相互排斥,必须等待一个线程运行完毕,另一个才能运行,而同步也是不能同时运行,但他是必须要按照某种次序来运行相应的线程(也是一种互斥)!

激活谷谷主为您准备了激活教程,为节约您的时间请移步至置顶文章:https://sigusoft.com/99576.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/95497.html

(0)
上一篇 2024年 5月 24日 下午6:36
下一篇 2024年 5月 24日 下午7:02

相关推荐

  • pycharm中文使用教程_pycharm入门教程(非常详细)

    pycharm中文使用教程_pycharm入门教程(非常详细)pycharm 软件详细使用教程,新手必看篇pycharm是一款python IDE工具,具有跨平台性,功能强大,操作方便,下面我就给使用这款软件的初学者做一个简单的使用教程

    2024年 5月 11日
  • mybatis与hibernate区别_hibernate中文

    mybatis与hibernate区别_hibernate中文mybatis和hibernate的以及jpa区别_hibernate sql大家好,又见面了,我是你们的朋友全栈君。1、概述hibernate和mybatis是当前流行的ORM框架。hibernate对数据库结构提供了较为完整的封

    2024年 5月 9日
  • pycharm怎么改成中文2018_pycharm如何改成中文

    pycharm怎么改成中文2018_pycharm如何改成中文pycharm如何将英文设置为中文(详细教程)在pycharm中将界面变为中文有两种不同的方法,我将为您介绍它们。方法一是通过安装一个名为"Chinese"的插件来实现汉化。您可以

    激活谷笔记 2024年 5月 8日
  • 二阶低通滤波器q值_二阶低通滤波器q值与带宽

    二阶低通滤波器q值_二阶低通滤波器q值与带宽离散时域滤波器的实现(四)有限字长表示与误差分析当鲜花凋零遍地,是否有新的种子在萌芽?一、回顾上节总结了FIR系统的结构设计。Michael Lieman:离散时域滤波器的实现(三)FIR系统的实现自此,理论原理已经了解完

    激活谷笔记 2024年 5月 20日
  • 浅谈JAVA字符串匹配算法indexOf函数的实现方法

    浅谈JAVA字符串匹配算法indexOf函数的实现方法这篇文章主要介绍了浅谈字符串匹配算法indexOf函数的实现方法,indexOf函数我们可以查找一个字符串(模式串)是否在另一个字符串(主串)出现过。对此感兴趣的可以来了解一下

    2024年 3月 15日
  • srt的全称_srtp全称

    srt的全称_srtp全称srtp申请书(精选3篇)_srtp项目申请书srtp申请书(精选3篇)由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“srtp项目申请书”。第1篇:srtp心得个人心得白驹过隙,为期一年的srtp项目即将结束

    激活谷笔记 2024年 5月 28日
  • split函数头文件_c++split函数头文件

    split函数头文件_c++split函数头文件c++实现字符串分割split()函数(实用,详细)1.分隔符为单个字符时类是头文件中定义的流之一, 它的操作类似于,常用于数据类型的转换(字符串转为数值型),除此之外还能用来对字符串进行分割操作,以

    2024年 5月 24日
  • xshell连接到虚拟机_linux连接Xshell

    xshell连接到虚拟机_linux连接Xshell【干货】xshell怎么连接linux虚拟机,【收藏】xshell怎么连接linux虚拟机做软件开发的,一定需要接触到服务器,把开发的软件部署到服务器方可供大家使用和访问,但是在学习阶段,往往买不起真正的服

    2024年 5月 13日
  • Rider激活2024.1.2(Uber Statistics 2024: How Many People Ride with Uber?)

    Rider激活2024.1.2(Uber Statistics 2024: How Many People Ride with Uber?)

    2024年 6月 7日
  • 7-zip怎么解压软件_7zip解压软件

    7-zip怎么解压软件_7zip解压软件7-zip压缩和解压文件方法教程7-zip如何压缩文件?1.下载安装7-zip,在需要压缩的文件或文件夹上右键,找到“7-zip”选项2.把鼠标放在上面,打开二级菜单,点击添加到压缩包。3.这里是详细设置,设置完点击“确定”。4.开始压缩。7-zi

    2024年 5月 11日
  • is is协议报文_is-is协议

    is is协议报文_is-is协议CNNIC技术专家主导制定互联网下一代WHOIS国际标准2015年3月26日,在美国达拉斯召开的国际互联网工程任务组(Internet Engineering Task Force,简称IETF)第92次大会上传来消息,由CNNIC技术专家参与制定的三篇下一代WHOIS协议文稿正式发

    激活谷笔记 2024年 5月 30日
  • faculty怎么用_faculty包括学生吗

    faculty怎么用_faculty包括学生吗faculty工作faculty的意思A:How may I help you?我能帮你做点什么?B:I’m looking for a job.我正在找工作。faculty的解释A:What kind of job are you looking for?你要找哪种类型的工

    激活谷笔记 2024年 5月 14日
关注微信