モニターでは、スレッド A が何らかの条件が false であるため待機し、他のスレッド B が条件が true であると通知し、条件をリセットすると、条件が再び false になります。スレッド A が実行を再開するとき、状態をチェックする必要がありますか? それともその後に進むべきですか?
質問する
38 次
1 に答える
0
ほとんどのプログラミング言語/環境では、誤った wakeupを考慮していないため、アプローチは間違っています。
状態で待機する場合、多くの言語/環境では、誰かが明示的に信号を送信しなくても目が覚める可能性を考慮する必要があります。これは、スプリアス ウェイクアップと呼ばれます (たとえば、スプリアス ウェイクアップは実際に発生しますか?を参照してください)。
シグナル スレッドが状態をリセットする場合、適切なシグナルと偽のシグナルを区別できないため、これを行うべきではありません。
于 2013-10-20T12:33:00.240 に答える