我有两个主题,比如1和2,并且已经让2个人睡觉了。 1执行某项任务并设置一个计时器,以在任务完成后2秒唤醒。
所以,我需要编程才能在2秒之后发送信号。我怎样才能做到这一点?
答案 0 :(得分:1)
您可以对条件变量使用定时等待,该条件变量将在达到/已过去时唤醒。你也可以让线程睡一段时间。
pthreads(您指定)只有等到绝对时间。
新的标准C ++库和boost为您提供wait_for(time_period)
或wait_until(absolute_time)
选项。
在你的情况下,我认为你不需要做任何这些,但你可能会使用第三个帖子。
线程1执行任务,线程2等待条件变量,当线程1完成任务时,它创建第3个线程,该线程休眠并唤醒线程2.
线程1执行任务并立即发出线程2持有的条件变量的信号,但线程2在继续之前休眠。 (所以真的它早点醒来但它模拟了延迟)。不需要第三个线程,但是线程2可能是一个"客户端"线程,你想强制执行延迟,所以如果是这种情况,请使用方法1.
答案 1 :(得分:0)
在C ++ 11之前,标准库没有提供计时器。即使使用C ++ 11,您也拥有标准计时功能(例如,睡眠,条件变量等),但您必须将它们组合起来以获得所需的行为。
所以,你大致有以下几种情况:
我建议最后一个选项。