• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

【达人提问】信号量与互斥锁

东方青 2017-12-05 浏览量:922
Linux应用编程中的信号量和互斥锁怎么用??他们的区别是什么??应用场景是什么??
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 信号量强调的是线程(或进程)间的同步“信号量用在多线程多任务同步的,一个线程完成了某一个动作就通过信号量告诉别的线程,别的线程再进行某些动作(大家都在sem_wait的时候,就阻塞在那里)。当信号量为单值信号量是,也可以完成一个资源的互斥访问。有名信号量:可以用于不同进程间或多线程间的互斥与同步;无名信号量,用于进程体内各线程间的互斥和同步,基于内存的信号量。

    互斥锁(又名互斥量)强调的是资源的访问互斥:互斥锁是用在多线程多任务互斥的,一个线程占用了某一个资源,那么别的线程就无法访问,直到这个线程unlock,其他的线程才开始可以利用这个资源。比如对全局变量的访问,有时要加锁,操作完了,在解锁。有的时候锁和信号量会同时使用的” 
    也就是说,信号量不一定是锁定某一个资源,而是流程上的概念,比如:有A,B两个线程,B线程要等A线程完成某一任务以后再进行自己下面的步骤,这个任务并不一定是锁定某一资源,还可以是进行一些计算或者数据处理之类。而线程互斥量则是“锁住某一资源”的概念,在锁定期间内,其他线程无法对被保护的数据进行操作。在有些情况下两者可以互换。
     ​​​​

    有的时候锁和信号量会同时使用的​。

    • 发布于 2017-12-14
    • 举报
    • 评论 1
    • 0
    • 0
电子老工程师 回复了 :规格书中尺寸公差为±0.1mm[0.004英寸]。 回复

其他答案 数量:5
  • 信号量用在多任务线程同步,只有信号量的value大于0,其他等待信号量的线程才可以用,并且每个等待信号的任务得到信号 之后对value减一

    当信号量的value为0的时候,其他等带信号量的线程进入阻塞状态。

    互斥锁相当于2值信号量,一个资源对于多任务,只有能用或不能使用2个选择

    信号量用在多任务线程之间的同步,一个线程达成了某个事件就通过信号量通知其他线程

    互斥锁用在多任务线程的互斥,保证资源的互斥访问

    • 发布于2017-12-05
    • 举报
    • 评论 1
    • 0
    • 0
电子老工程师 回复了  :EEE1VA101XP 供参考 回复

  • 信号量和互斥锁一般都用于多线程编程中,不过二者应用场景(线程间关系不同),

    互斥锁保障同一时间只有一个线程获得,其它的不能获得,如果要根据互斥锁获取与否执行的化,则可以保证同一时间只有获得锁的线程能够执行。

    信号量则不保证唯一获得关系,只要注册了使用信号量的线程,都可以在信号量发生变化时获得相应信息,这样可以据此进行相应处理,所以它只是一个信号,具体如何处理要看相关线程(进程)中的具体处理。

    • 发布于2017-12-05
    • 举报
    • 评论 1
    • 0
    • 0
电子老工程师 回复了  :AD974ARSZ 电压范围比原型号高,4.75V ~ 5.25V 回复

  • 1、二者的区别:互斥量用于线程的互斥,信号量用于线程的同步。  

    2、用法:互斥量值只能为0/1,就是只能指定两个线程互斥或者不互斥

    信号量的值可以为整数,只有信号量的值大于0时此线程才能被访问

    3、应用场景:信号量用来协调不同进程间的数据对象的

    互斥量用于指定两个进程之间的关系​

    • 发布于2017-12-05
    • 举报
    • 评论 1
    • 0
    • 0
电子老工程师 回复了  :原厂资料无相关说明,FAE处无法确认,建议联系供应商
回复

  • 信号量用在多线程多任务同步的,一个线程完成了某一个动作就通过信号量告诉别的线程,别的线程再进行某些动作
    互斥锁是用在多线程多任务互斥的,一个线程占用了某一个资源,那么别的线程就无法访问,直到这个线程unlock,其他的线程才开始可以利用这个资源
    • 发布于2017-12-08
    • 举报
    • 评论 0
    • 0
    • 0

  • 信号量用于线程同步,也可以设置为某共享资源的使用次数
    互斥锁用于保证不同线程间对于共享资源的访问,保证不发生冲突,
    • 发布于2017-12-29
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

【达人提问】信号量与互斥锁