c++ - 在特定时间后唤醒线程

标签 c++ multithreading pthreads

我有两个线程,比如 1 和 2,并让 2 进入休眠状态。 1 执行一些任务并设置一个定时器在任务完成后 2't' 秒唤醒。

所以,我需要编程在 2 't' 秒后发送信号。我怎样才能做到这一点?

最佳答案

您可以在条件变量上使用定时等待,它会在到达/已经过去时唤醒。您也可以让线程休眠一段时间。

pthreads(您指定的)只有等待到绝对时间。

新的标准 C++ 库和 boost 为您提供了 wait_for(time_period)wait_until(absolute_time) 选项。

在你的情况下,我认为你不需要做任何这些,但你可以使用第三个线程。

  1. 线程 1 执行任务,线程 2 等待条件变量,当线程 1 完成任务时,它创建第三个线程,该线程休眠并唤醒线程 2。

  2. 线程 1 执行任务并立即向线程 2 持有的条件变量发出信号,但线程 2 然后在继续之前休眠。 (所以它确实更早醒来,但它模拟了延迟)。不需要第三个线程,但是线程 2 可能是“客户端”线程并且您想要强制执行延迟,因此在这种情况下使用方法 1。

关于c++ - 在特定时间后唤醒线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26119528/

相关文章:

c++ - 在 emacs 中使用 EDE 处理 cmake/C++ 项目

c++ - 如果我不允许分配右值来引用为什么下面的代码片段有效,这在内部是如何工作的?

c++ - MFC CFormView OnKeyDown 事件未触发

ios - UIView 绘制(_ 矩形 : CGRect) doesn't work with multithreading

Java 客户端 - 服务器 - 具有同步线程的客户端

c++ - 在 C++ 中将 PUNICODE_STRING 与 regex_match 结合使用

c# - 异步/等待与线程

c - pthread_exit 做了什么让 main 应该调用它来防止其他线程过早死亡

c - 多个生产者中的 posix 线程互斥和条件变量使用

c - 在 C 中使用 mutex 和 barrier 进行线程同步