std::condition_variable::wait() 是 POSIX 线程取消点吗?

Is std::condition_variable::wait() a POSIX thread cancellation point?

主题行说明了一切。我的环境是带有 C++11 编译器的 Linux 系统。

有人知道吗?

这当然是标准中没有定义的东西,因此无法以跨平台的方式回答。

但是,如果 std::condition_variable::native_handlepthread_cond_t* 类型,那么您可以相对确定 std::condition_variable::wait 也将使用 pthread_cond_wait。尽管如此,仍然没有保证,所以唯一安全的方法是检查您的实施。

此外,我会限制将标准工具与平台特定的东西混合使用,例如 POSIX。我要么选择完整的 POSIX 方式,要么使用标准替代方案,例如升压中断点。