【发布时间】:2010-10-12 03:20:42
【问题描述】:
我今天在Boost thread documentation 看到了这个有趣的段落:
void wait(boost::unique_lock<boost::mutex>& lock)
...
效果:原子调用 lock.unlock() 并阻塞当前线程。这 线程将在收到通知时解除阻塞 调用 this->notify_one() 或 this->notify_all(),或虚假地。 当线程被解除阻塞时(对于 不管什么原因),锁是 通过调用 lock.lock() 重新获取 在调用等待返回之前。这 锁也通过调用重新获取 lock.lock() 如果函数退出 一个例外。
所以我感兴趣的是“spuriously”这个词的含义。为什么线程会因为虚假原因而被解除阻塞?有什么办法可以解决这个问题?
【问题讨论】:
标签: multithreading boost wait conditional-statements