码迷,mamicode.com
首页 > 编程语言 > 详细

线程同步和互斥的区别

时间:2017-05-12 10:46:42      阅读:127      评论:0      收藏:0      [点我收藏+]

标签:color   限制   包含   div   关联   使用   唯一性   排它   无法   

  1. 互斥是指某一资源同时只允许一个访问者对其进行访问,具有唯一性和排它性。但互斥无法限制访问者对资源的访问顺序,即访问是无序的。
  2. 同步是指在互斥的基础上(大多数情况),通过其它机制实现访问者对资源的有序访问。
  3. 同步其实已经实现了互斥,所以同步是一种更为复杂的互斥。
  4. 互斥是一种特殊的同步。

 

所谓互斥,就是不同线程通过竞争进入临界区(共享的数据和硬件资源),为了防止访问冲突,在有限的时间内只允许其中之一独占性的使用共享资源。如不允许同时写

同步关系则是多个线程彼此合作,通过一定的逻辑关系来共同完成一个任务。一般来说,同步关系中往往包含互斥,同时对临界区的资源会按照某种逻辑顺序进行访问。如先生产后使用

总的来说,两者的区别就是:
互斥是通过竞争对资源的独占使用,彼此之间不需要知道对方的存在,执行顺序是一个乱序。
同步是协调多个相互关联线程合作完成任务,彼此之间知道对方存在,执行顺序往往是有序的。

lock与unlock方法,替换synchronized,这就是互斥锁的体现。消费者生产者模式就是同步锁的体现。

线程同步和互斥的区别

标签:color   限制   包含   div   关联   使用   唯一性   排它   无法   

原文地址:http://www.cnblogs.com/baizhanshi/p/6844356.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!