0

在监视器中,如果线程 A 因为某个条件为假而等待,并且如果其他线程 B 发出信号作为条件为真并重置条件,则条件再次变为假。当线程 A 恢复执行时,它应该检查条件吗?还是应该在那之后继续?

4

1 回答 1

0

在大多数编程语言/环境中,您的方法是错误的,因为它没有考虑虚假唤醒

在等待条件时,在许多语言/环境中必须考虑在没有任何人明确向您发送信号的情况下将您唤醒的可能性。这称为虚假唤醒(请参阅例如虚假唤醒是否真的发生了?)。

如果信号线程重置条件,则您无法区分正确信号和虚假信号,因此您不应该这样做。

于 2013-10-20T12:33:00.240 回答