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に終了11:11:15に次の実行まで2.7秒待つ必要があります
- 11:11:59.2に終了するときは、11:12:00に次の時間まで0.8秒待つ必要があります。
問題は、do_sleepをどのように書くかです。