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 使用谓词如何表现?

bool版本的boost :: condition_variable :: wait_until如何使用谓词?

提升ASIO IO_SERVICE实施?

如果在我执行 timed_wait 持续时间时系统时间发生变化怎么办?