信号量有条件变量吗?

时间:2018-04-22 17:36:07

标签: operating-system system mutex semaphore monitors

是不是等待并发信号通知条件变量来表示请求和释放?

This link表示信号量在监视器上没有候选变量。

根据同一网站,

  

条件变量允许进程在监视器内等待   并允许等待进程立即恢复另一个   进程释放资源。

信号量中的程序不一样吗?

1 个答案:

答案 0 :(得分:0)

这里的区别在于信号量是一个有状态对象,而条件变量是无状态的。

这个想法是,有时你有一个非常复杂的状态(不能用像信号量这样的简单计数器来表示),你想要等待那个状态改变。这就是为什么条件变量与互斥锁一起使用的原因 - 需要一个互斥锁来保护该状态的变化,并允许等待更改而不会丢失通知。

在内部,一些信号量实现基于条件变量 - 在这种情况下,计数器是一个将要改变的受保护状态。但是这样的实现并不是很有效,因为现代操作系统有更好的方法来实现信号量。

如果您想知道如何实现条件变量和信号量,您可以阅读我的答案here