2

アプリケーション(Linux 2.6.31で実行)は、呼び出しを使用してペースが調整されusleepます。ただし、日付の変更(dateシェルからの使用またはclock_settime別のプロセスからの使用)に対しては回復力がないようです。アプリケーションがロックされないようにするために行うべき正しいことは何ですか?

edit1

アプリケーションが100ミリ秒ごとに何かを実行したいとします。ジョブが完了すると、gettimeofdayを呼び出し、残りのミリ秒を推定して次の100ミリ秒のスライスまでスリープさせてから、usleepを呼び出します。

4

1 に答える 1

2

現在の日時ではなく、時間間隔を確認する必要がある場合は、次の呼び出しを使用する必要があります。

struct timespec tim;
uint64_t microsec;

clock_gettime(CLOCK_MONOTONIC、&tim);
microsec = 1000000ULL * tim.tv_sec + tim.tv_nsec / 1000;

これは、システムの稼働時間であり、実際の完全な「ハードウェア」時間です(変更できません)。

定期的なルーチンについては、alarm()とsetitimer()を使用して定期的なハンドラーを設定できます。

于 2011-03-29T13:18:40.703 に答える