【发布时间】:2013-05-30 05:07:55
【问题描述】:
我正在使用条件变量来停止一个线程,直到另一个线程完成处理它的任务队列(长篇大论)。所以,我在一个线程上锁定并等待:
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,仅供参考)。是的,这看起来很奇怪。有谁知道为什么会发生这种情况?我是否误用了条件变量?
【问题讨论】:
-
代码有点混乱……第一个
m_mutex和第二个m_parent.m_mutex是同一个实例吗?
标签: c++ multithreading boost