守护进程线程以不同的间隔唤醒

时间:2010-07-02 11:43:00

标签: algorithm multithreading scheduling

我有一个守护程序线程,它以指定的间隔唤醒以执行某项任务。现在我需要再添加两个任务给线程&这些任务有自己的间隔。像

这样的东西
  • 每x秒后执行Task1
  • 每y秒后执行Task2
  • 每隔z秒后执行Task3

所以我基本上需要提出一个睡眠逻辑来确保所有任务都在正确的时间完成。这样做的最佳方式是什么? 我的想法是,每个任务执行的时间是算术级数,所以我需要结合每个任务对应的AP。使用该系列来计算我需要睡眠的时间间隔以及要执行的下一个任务。这种方法有意义吗?

1 个答案:

答案 0 :(得分:0)

你可以这样做:

now = time_in_seconds()
time_since_task1 = x - (now % x)
time_since_task2 = y - (now % y)
time_since_task3 = z - (now % z)

shortest_interval = min(min(time_since_task1, time_since_task2), time_since_task3)
sleep(shortest_interval)

然后你可以检查“new now”是否等于0 mod x,y,z并执行必要的任务。