1. ホーム
  2. linux

[解決済み】CLOCK_REALTIMEとCLOCK_MONOTONICの違い?

2022-04-04 06:03:45

質問

との違いを教えてください。 CLOCK_REALTIMECLOCK_MONOTONIC が返す時計は clock_gettime() を Linux で使用することはできますか?

外部ソースから生成されたタイムスタンプと現在時刻の間の経過時間を計算する必要がある場合、どちらが良い選択でしょうか?

最後に、NTPデーモンが定期的にシステム時刻を調整している場合、これらの調整は、以下の各項目とどのように相互作用するのでしょうか? CLOCK_REALTIMECLOCK_MONOTONIC ?

解決方法は?

CLOCK_REALTIME は、現在の壁時計、一日の時間について、マシンの最善の推測を表します。 というように イグナシオ マークR と言うと、これは CLOCK_REALTIME は、NTPを含むシステムの時刻が変更されると、前方にも後方にもジャンプすることができます。

CLOCK_MONOTONIC は、過去の任意の固定点からの壁掛け時計の絶対的な経過時間を表します。 これは、システム時刻の変更には影響されません。

1台のマシンで観測された2つの事象の間の経過時間を、再起動を挟まずに計算したい場合。 CLOCK_MONOTONIC が最適です。

Linuxでは注意してください。 CLOCK_MONOTONIC はサスペンド中の時間を測定しませんが、 POSIX の定義では測定することになっています。 Linux特有の CLOCK_BOOTTIME を使えば、サスペンド中も動き続ける単調な時計になります。