1

不是等待和信号条件变量来表示请求和释放吗?

该链接指出,信号量没有分生变量,而监视器有。

根据同一网站,

条件变量允许进程在监视器内等待,并允许等待的进程在其他进程释放资源时立即恢复。

这不是信号量中的相同过程吗?

4

1 回答 1

1

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

这个想法是,有时你有一个非常复杂的状态(不能用一个简单的计数器来表示,比如信号量),你想等待那个状态改变。这就是条件变量与互斥锁一起使用的原因——需要互斥锁来保护状态的变化,并允许在不丢失通知的情况下等待变化。

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

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

于 2018-04-23T01:24:59.667 回答