信号量互斥锁和条件变量的区别
Posted rabbit0212
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了信号量互斥锁和条件变量的区别相关的知识,希望对你有一定的参考价值。
1、互斥锁总是必须由给其上锁的线程解锁,信号量的挂出确不必由执行过它的等待操作的同一线程执行。
生产者与消费者伪代码
2、互斥锁要么被锁住,要么被解锁(二值状态,类似于二值信号量)
3、既然信号量有一个与之关联的状态(它的数值),那么信号量的挂出操作总是被记住。然而当向一个条件变量发送信号时,如果没有线程等待在该条件变量上,那么信号将丢失。
ps:提供信号量的原因是,在进程间同步的情况下,若没有涉及到共享内存区时,需要使用信号量。
以上是关于信号量互斥锁和条件变量的区别的主要内容,如果未能解决你的问题,请参考以下文章
使用互斥锁和条件变量而不是信号量在 c++14 中打印从 1 到 10 的数字?