首页 > 解决方案 > 为什么我们不在信号生产者而不是消费者检查条件变量?

问题描述

据我所知,消费者在等待信号时会检查条件变量。

Consumer:
lock.Lock()
while(condition) {
    cond.Wait()
}
lock.Unlock()

Producer:
lock.Lock()
changeCondition()
cond.Signal() or cond.Broadcast()
lock.Unlock()

为什么不能:

Consumer:
lock.Lock()
cond.Wait()
lock.Unlock()

Producer:
lock.Lock()
changeCondition()
if(condition) {
    cond.Signal() or cond.Broadcast()
}
lock.Unlock()

标签: lockingsignalscondition-variable

解决方案


推荐阅读