Обеспечивает ли Linux монотонно увеличивающуюся тактовую частоту приложений?
Вопрос
Предоставляет ли Linux/Unix/Posix API приложениям пользовательского пространства для доступа к монотонно увеличивающимся часам с точностью от долей секунды до миллисекунды?
В Linux /proc/uptime предоставляет строковое представление числа с плавающей запятой, обозначающего количество секунд работы системы.
gettimeofday(2) не обеспечивает монотонно возрастающие часы.
Я мог бы использовать getitimer(2) во временной области ITIMER_REAL, установить таймер на начало максимума (зависит от платформы) и игнорировать генерируемый сигнал, но, согласно странице руководства, максимальное время, в течение которого может работать таймер, составляет примерно 100 дней, что короче моего ожидаемого времени работы.
Решение
Используйте POSIX clock_gettime()
функция с CLOCK_MONOTONIC
.См. справочная страница для получения подробной информации.
Другие советы
Есть clock_gettime:
struct timespec tp;
clock_gettime(CLOCK_MONOTONIC, &tp);