我注意到當我對條件變量執行等待操作時,它立即返回。其結果是,執行下面的僞代碼時,被在此循環中使用一個CPU的100%:條件變量
int main(void) {
boost::condition_variable cond;
boost::mutex mut;
bool data_ready = false;
boost::unique_lock<boost::mutex> lock(mut);
while (!data_ready) {
cond.wait(lock);
}
return 1;
}
我希望調用cond.wait(lock)
把線程的狀態它不消耗任何CPU,但事實並非如此。
那麼問題在哪裏呢?我從boost文檔中獲取了上述代碼。
(我使用升壓1.44)
感謝,
紀堯姆
「虛假」事件是每個土星中的一個與木星的情況一致。這值得一提,但不應該用來證明這種情況。例如,當發生系統異常(sigbus或某種信號)時,可能會發生虛假喚醒。這不會一直髮生,他還有其他問題。 – 2014-03-24 02:28:13