Вибачте, немає репутації, щоб додати це як коментар. Тож це є додатковою відповіддю.
Залежно від того, як часто ви будете телефонувати clock_gettime()
, вам слід пам’ятати, що лише деякі з «годинників» надаються Linux у VDSO (тобто не потрібно систематичний виклик з усіма накладними витратами - який тільки погіршився, коли додано Linux засоби захисту від нападів, схожих на Привид).
Хоча clock_gettime(CLOCK_MONOTONIC,...)
, clock_gettime(CLOCK_REALTIME,...)
і gettimeofday()
завжди буде надзвичайно швидким (прискорюється VDSO), це не відповідає дійсності, наприклад, CLOCK_MONOTONIC_RAW або будь-який з інших годин POSIX.
Це може змінитися у версії ядра та архітектурі.
Хоча більшості програм не потрібно на це звертати увагу, можуть спостерігатись затримки у затримках годин, прискорених VDSO: якщо ви потрапляєте на них прямо, коли ядро оновлює область спільної пам’яті за допомогою лічильників годин, йому доведеться чекати, коли ядро для закінчення.
Ось "доказ" (GitHub, щоб ботів не було на kernel.org):
https://github.com/torvalds/linux/commit/2aae950b21e4bc789d1fc6668faf67e8748300b7