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_resolutionCLOCK_MONOTONIC: 1ns CLOCK_MONOTONIC_COARSE: 999848ns (about 1ms) HPET: ~]#./clock_resolutionCLOCK_MONOTONIC: 1ns CLOCK_MONOTONIC_COARSE: 999848ns (about 1ms) ACPI_PM: ~]#./clock_resolutionCLOCK_MONOTONIC: 1ns CLOCK_MONOTONIC_COARSE: 999848ns (about 1ms)