我正在使用條件變量來停止線程,直到另一個線程完成處理它的任務隊列(長篇故事)。因此,在一個線程我鎖和等待:如何使用boost條件變量來等待線程完成處理?
boost::mutex::scoped_lock lock(m_mutex);
m_condition.wait(lock);
一旦其它線程已經完成它的任務,它標誌着等待線程如下:
boost::mutex::scoped_lock lock(m_parent.m_mutex);
m_parent.m_condition.notify_one();
我看到的問題是等待線程不會停止等待,除非我在它後面的指令上設置斷點(我正在使用xcode,fyi)。是的,這看起來很奇怪。有誰知道爲什麼會發生這種情況?我錯用了條件變量嗎?
的代碼是一個有點混亂......是第一個'm_mutex'相同的實例作爲第二個'm_parent.m_mutex'? –