15.2.2. clock_getres() を使用したクロック解決の比較
この
clock_getres()
関数を使用すると、特定の POSIX クロックの解決が可能となります。clock_getres()
は、使用される POSIX クロックの ID と、結果が返される timespec 構造のポインターと同じ 2 つのパラメーターを clock_gettime()
として使用します。以下の関数を使用すると、CLOCK_MONOTONIC
と CLOCK_MONOTONIC_COARSE
間の正確性を比較できます。
main() { int rc; struct timespec res; rc = clock_getres(CLOCK_MONOTONIC, &res); if (!rc) printf("CLOCK_MONOTONIC: %ldns\n", res.tv_nsec); rc = clock_getres(CLOCK_MONOTONIC_COARSE, &res); if (!rc) printf("CLOCK_MONOTONIC_COARSE: %ldns\n", res.tv_nsec); }
例15.3 clock_getres
のサンプル出力
TSC: ~]#./clock_resolution
CLOCK_MONOTONIC: 1ns CLOCK_MONOTONIC_COARSE: 999848ns (about 1ms) HPET: ~]#./clock_resolution
CLOCK_MONOTONIC: 1ns CLOCK_MONOTONIC_COARSE: 999848ns (about 1ms) ACPI_PM: ~]#./clock_resolution
CLOCK_MONOTONIC: 1ns CLOCK_MONOTONIC_COARSE: 999848ns (about 1ms)