需要每 5 秒运行一次子程序,但在系统时钟标记处测量。因此,需要每分钟在 0、5、10、15.... 45、50、55 秒(准确地说,以 0.1 秒的精度)启动它。
就像是:
for(;;) {
do_sleep(); #time need to sleep to the next 5 second mark
run_this();
}
run_this
潜艇可以快也可以慢(它的运行时间在 0.2 - 120 秒之间)。当它运行超过 5 秒时 - 无论它的运行时间如何,下一次运行都必须在准确的 5 秒标记处。
例如,当run_this
- 结束于 11:11:12.3 需要等待 2.7 秒才能在 11:11:15 进行下一次运行
- 当在 11:11:59.2 结束时只需要等待 0.8 秒到下一个在 11:12:00,依此类推...
问题是:如何写do_sleep?