linux - 在多处理器系统上以微秒精度打印当前时间

时间:2014-12-23 07:54:03

标签: c++ linux

如何以微秒(或更好,纳秒)的精度打印当前系统时间?我需要这个时间在所有系统处理器之间保持一致。如果这不可能,我希望它在所有处理器内核之间保持一致。

我已经尝试clock_gettime(CLOCK_REALTIME但我怀疑它至少在不同的处理器上运行时会产生不同的结果。

1 个答案:

答案 0 :(得分:2)

听起来你真正想要的是CLOCK_MONOTONIC_RAW(或只是CLOCK_MONOTONIC)。原始时钟测量从固定点开始的时间并查询纯硬件时钟。在Linux上,这个固定的时间点是启动时间。系统时间的变化不会影响此时钟(夏季/冬季等)

您可以通过拨打clock_getres(clockid_t clk_id, struct timespec *res);

来检查系统中时钟的分辨率

gettimegetres都采用包含两个整数的timespec结构:秒和纳秒。所以软件就在那里,你只需要一个能够提供纳秒分辨率的(硬件)时钟。

这两个函数的手册页:

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

如果您可以访问Michael Kerrisk所着的“Linux Programming Interface”一书,请查看第23章第5段(POSIX时钟)。谈到基本的Linux编程,本书给了我更多答案,甚至比StackOverflow还要多!