码迷,mamicode.com
首页 > 其他好文 > 详细

信号量与互斥锁区别

时间:2018-01-29 15:44:37      阅读:156      评论:0      收藏:0      [点我收藏+]

标签:设置   ike   top   排它   图片   机制   正是   通过   收信   

信号量与互斥锁之间的区别:

互斥量用于线程的互斥,信号线用于线程的同步。  
这是互斥量和信号量的根本区别,也就是互斥和同步之间的区别。  


互斥:是指某一资源同时只允许一个访问者对其进行访问,具有唯一性和排它性。但互斥无法限制访问者对资源的访问顺序,即访问是无序的。  
同步:是指在互斥的基础上(大多数情况),通过其它机制实现访问者对资源的有序访问。在大多数情况下,同步已经实现了互斥,特别是所有写入资源的情况必定是互斥的。少数情况是指可以允许多个访问者同时访问资源  

 

 

信号量经典举例

题目描述:白子和黑子各有32个,黑子先行怎样设置信号量,才能黑子先行,且是交替下子

解答:

信号量: 

白子可下吗? s1 = 0

黑子可下吗? s2 = 1

     白                                             黑

for(i=0;i<32;i++){                   for(i=0;i<32;i++){                             

   取子                                          取子       

   P(s1)                                        P(s2)         

   放白子                                       放黑子     

   V(s2)                                        V(s1)

}                                              }

 注意:正是因为设置了两个信号量s2与s1,才实现了黑子先行的策略,因为一开始s2=1,s1=0,而黑子首先判断的是s2,所以这个时候黑子可以走了,而白字判断的是S1,这个时候s1=0,所以,白字需要等待。黑子下完以后,讲s1置为1,这个时候白字才能走,很巧妙。

 

 

越狱》寄信

 

 技术分享图片

 题目描述:T-boy给brad送信,Mike给Lincon送信,但他们送信收信都通过同一个树洞。

 

信号量:

Lincon: 是否有Mike的信,s1 = 0

Brad:    是否有T-boy的信,s2 = 0

Mike和T-boy: 树洞是否为空,s3 = 1

 

Mike:                    T-boy:                 Lincon:                 Brad:

write()                  write()                P(s1)                    P(s2)                               

 

P(s3)                    P(s3)                  getit()                   getit()                                    

 

putit()                   putit()                 V(s3)                   V(s3)                                           

 

V(s1)                     V(s2)                 readit()                 readit()

 

 

 

题目描述:四个人进行接力赛跑,要求使用信号量的方法使得跑的顺序是P1->P2->P3->P4

解答:

信号量:

s2:2号接棒 0

s3:3号接棒 0

s4:4号接棒 0

 

P1                P2                 P3                       P4

 

                  P(s2)             P(s3)                   P(s4)                    

run             run                 run                      run               

V(s2)          V(s3)             V(s4)              

 

信号量与互斥锁区别

标签:设置   ike   top   排它   图片   机制   正是   通过   收信   

原文地址:https://www.cnblogs.com/gczr/p/8376087.html

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