我正在使用条件变量来停止线程,直到另一个线程完成处理它的任务队列(长篇故事)。因此,在一个线程我锁和等待:如何使用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'? –