在监视器中,在等待进入线程后应该再次检查条件吗?

时间:2013-10-16 17:50:10

标签: multithreading

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

1 个答案:

答案 0 :(得分:0)

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

在等待条件时,在许多语言/环境中必须考虑在没有任何人明确向您发送信号的情况下您将被唤醒的可能性。这称为虚假唤醒(参见例如Do spurious wakeups actually happen?)。

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