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

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

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

  互斥概念

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

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

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

  同步概念

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

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

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

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

  互斥与同步的区别

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

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

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

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

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

2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html

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

(0)
上一篇 2024年 5月 28日 下午7:16
下一篇 2024年 5月 28日 下午7:28

相关推荐

关注微信