4

Posix(Linux)環境で長時間実行されるサーバープログラム(Cで構築)の場合:将来の特定の時間に関数を実行するための最良のアプローチは何ですか?特定のスレッドで実行する必要はありませんが、実行時間の精度は数ミリ秒である必要があります。一般的なアプローチまたは特定のコードを歓迎します。

4

2 に答える 2

1

GNU C ライブラリ ( ) にはいくつかの高精度クロック関数があるsys/timex.hため、それらは POSIX ではありませんが、移植可能な Linux に適しています。

高精度時計 -- GNU C ライブラリ

これらの機能には接頭辞「ntp」が付いていますが、ntp サービスを必要とせず、利用することもないため、この関係は純粋に表面的なものです。

粒度はマイクロ秒単位ですが、Linux カーネルのユーザー空間のレイテンシは 10 ミリ秒なので、気にしたり、それ以上の正確さを期待したりしないでください。

現在の高解像度の時間を取得したら、持続時間を計算し、(posix) nanosleep (ただし、ここでも 10ms に丸めます) を使用して遅延を設定できます。興味深いかもしれないclock_nanosleepもあります。

于 2013-03-11T15:49:05.250 に答える