linux - печатает текущее время с точностью до микросекунды на многопроцессорной системе

0

Как распечатать текущее системное время с точностью до микросекунды (или, лучше, наносекундой)? Мне нужно, чтобы это время было согласованным между всеми системными процессорами. Если это невозможно, я хочу, чтобы он был согласован между всеми процессорными ядрами.

Я пробовал clock_gettime(CLOCK_REALTIME но я подозреваю, что он дает разные результаты, по крайней мере, при работе на разных процессорах.

  • 0
    Проверьте здесь .
  • 0
    Посмотрите на std::chrono::high_resolution_clock
Показать ещё 2 комментария
Теги:

1 ответ

2

Звучит для меня то, что вы действительно хотите, это CLOCK_MONOTONIC_RAW (или просто CLOCK_MONOTONIC). Сырые часы измеряют время, начинающееся с фиксированной точки, и запрашивают чистые аппаратные часы. В Linux это фиксированное время - это время запуска. Изменения в системном времени не влияют на эти часы (лето/зима и т.д.)

Вы можете проверить разрешение часов в вашей системе с вызовом clock_getres(clockid_t clk_id, struct timespec *res);

Как gettime и getres используют структуру timespec, которая содержит два целых числа: секунды и наносекунды. Таким образом, программное обеспечение есть, вам просто нужны (аппаратные) часы, способные обеспечить разрешение наносекунды.

Человеческие страницы двух функций:

http://man7.org/linux/man-pages/man2/clock_gettime.2.html и http://linux.die.net/man/3/clock_gettime

Если у вас есть доступ к книге "Интерфейс программирования Linux" Майкла Керриска, посмотрите главу 23 параграфа 5 (часы POSIX). Когда дело доходит до базового программирования Linux, эта книга дала мне больше ответов, чем даже StackOverflow!

  • 0
    Еще важнее время чтения (7)
  • 0
    гарантируется ли использование CLOCK_MONOTONIC_RAW на физических процессорах?
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню