是不是等待并发信号通知条件变量来表示请求和释放?
This link表示信号量在监视器上没有候选变量。
根据同一网站,
条件变量允许进程在监视器内等待 并允许等待进程立即恢复另一个 进程释放资源。
信号量中的程序不一样吗?
答案 0 :(得分:0)
这里的区别在于信号量是一个有状态对象,而条件变量是无状态的。
这个想法是,有时你有一个非常复杂的状态(不能用像信号量这样的简单计数器来表示),你想要等待那个状态改变。这就是为什么条件变量与互斥锁一起使用的原因 - 需要一个互斥锁来保护该状态的变化,并允许等待更改而不会丢失通知。
在内部,一些信号量实现基于条件变量 - 在这种情况下,计数器是一个将要改变的受保护状态。但是这样的实现并不是很有效,因为现代操作系统有更好的方法来实现信号量。
如果您想知道如何实现条件变量和信号量,您可以阅读我的答案here。