0

高解像度のタイマー(少なくともマイクロ秒レベルの解像度を持つ)が必要でしたがsetitimer()、マイクロ秒レベルで設定できることがわかりました。

struct itimerval t;
t.it_interval.tv_sec = 0;
t.it_interval.tv_usec = 2;
t.it_value.tv_sec = 0;
t.it_value.tv_usec = 3;
setitimer (ITIMER_REAL , &t, NULL);

私が知る必要があるのはsetitimer()、Linux での実際の解像度ですか?

4

2 に答える 2

1

実際には低くなりますが、どの程度低くなるかは指定されていません。マンページには次のように記載されています。

システム タイマーの解像度とシステムの負荷に応じて、しばらく (短い) 時間後に有効期限が切れる場合があります。time(7) を参照してください。

マイクロ秒レベルの解像度と精度が必要な場合は、リアルタイム ドメインにいます。

于 2011-10-04T09:58:13.437 に答える
1

API はマイクロ秒単位であり、実際の解像度はカーネル構成とハードウェア リソースの両方に依存します。

カーネル構成に Hi res timers オプションが設定されていない場合、解像度は OS ティック解像度になります。これはカーネル構成 (CONFIG_HZ) で設定され、通常は 100 ~ 1000 Hz です。

高解像度タイマー オプションがオンの場合、タイマーの分解能は、特定のタイマー ハードウェアの機能と制限によって決まります。

次のコマンドを使用して、システム上の実際のタイマー ソースを確認できます。

$ ls /sys/devices/system/clocksource/clocksource0/

$ cat /sys/devices/system/clocksource/clocksource0/*

于 2011-10-04T10:03:42.187 に答える