boost::condition_variable::notify_one() 的行为
Posted
技术标签:
【中文标题】boost::condition_variable::notify_one() 的行为【英文标题】:Behavior of boost::condition_variable::notify_one() 【发布时间】:2013-10-23 21:20:17 【问题描述】:boost::condition_variable::notify_one() 函数是自动恢复它正在解除阻塞的线程的执行,还是未定义并取决于操作系统如何调度线程?
我不太熟悉线程以及操作系统如何与它们交互,因此对 notify_one() 实现的任何了解都会有所帮助。
谢谢
【问题讨论】:
【参考方案1】:Boost 不会恢复,也不会安排任何事情,它会与操作系统对话,而操作系统会负责多任务处理。操作系统很可能会在未来某个时间解除对线程的阻塞;你可以拥有一个具有保证的实时操作系统(例如“未阻塞的线程将始终在 X 毫秒内开始执行”),但 Boost 不会尝试保证这一点。
【讨论】:
以上是关于boost::condition_variable::notify_one() 的行为的主要内容,如果未能解决你的问题,请参考以下文章
bool 版本的 boost::condition_variable::wait_until 使用谓词如何表现?