我有两个线程,比如 1 和 2,并让 2 进入休眠状态。 1 执行一些任务并设置一个定时器在任务完成后 2't' 秒唤醒。
所以,我需要编程在 2 't' 秒后发送信号。我怎样才能做到这一点?
最佳答案
您可以在条件变量上使用定时等待,它会在到达/已经过去时唤醒。您也可以让线程休眠一段时间。
pthreads(您指定的)只有等待到绝对时间。
新的标准 C++ 库和 boost 为您提供了 wait_for(time_period)
或 wait_until(absolute_time)
选项。
在你的情况下,我认为你不需要做任何这些,但你可以使用第三个线程。
线程 1 执行任务,线程 2 等待条件变量,当线程 1 完成任务时,它创建第三个线程,该线程休眠并唤醒线程 2。
线程 1 执行任务并立即向线程 2 持有的条件变量发出信号,但线程 2 然后在继续之前休眠。 (所以它确实更早醒来,但它模拟了延迟)。不需要第三个线程,但是线程 2 可能是“客户端”线程并且您想要强制执行延迟,因此在这种情况下使用方法 1。
关于c++ - 在特定时间后唤醒线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26119528/