信号量互斥锁和条件变量的区别

Posted rabbit0212

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了信号量互斥锁和条件变量的区别相关的知识,希望对你有一定的参考价值。

1、互斥锁总是必须由给其上锁的线程解锁,信号量的挂出确不必由执行过它的等待操作的同一线程执行。

技术图片

                                生产者与消费者伪代码

 

2、互斥锁要么被锁住,要么被解锁(二值状态,类似于二值信号量)

3、既然信号量有一个与之关联的状态(它的数值),那么信号量的挂出操作总是被记住。然而当向一个条件变量发送信号时,如果没有线程等待在该条件变量上,那么信号将丢失。

 

ps:提供信号量的原因是,在进程间同步的情况下,若没有涉及到共享内存区时,需要使用信号量。

 

以上是关于信号量互斥锁和条件变量的区别的主要内容,如果未能解决你的问题,请参考以下文章

在 C++ 中使用互斥锁和条件变量实现带有信号的监视器

使用互斥锁和条件变量而不是信号量在 c++14 中打印从 1 到 10 的数字?

信号量

条件变量和信号量的区别

关于条件变量与互斥锁信号量的区别,Linux下线程同步的几种方法

信号量 互斥锁 条件变量的区别(讲的很好,值得收藏)