C语言 在Linux上精确的进程间计时器



我想测量发送者进程和消费者进程之间的ping时间。
两个进程运行在同一个物理主机上,Linux 64位。

我目前使用clock_gettime(CLOCK_REALTIME, &cur_ts);。我基本上捕获当前时间戳cur_ts并将其发送到消费者进程;一旦它被另一端接收,我就在第二个进程中再次调用clock_gettime(CLOCK_REALTIME, &cur_ts);,并减去两次。

此程序在两个过程之间测量ping是否准确?我应该用别的东西吗?

谢谢

您正在使用正确的接口。这是posix指定的HRT(高分辨率定时器),在现代Loonix中可用,您的使用是规范标准。

对于ping分辨率,这可能无关紧要,但是可以使用CLOCK_MONOTONIC,,特别是在短时间间隔内。在其他条件下,CLOCK_REALTIME可能更准确。然而,这些时钟的确切含义并不是由Posix指定的,在Linux上,我相信它们都受到NTP调整的影响。至少对于长时间间隔来说,这是一件好事。

在Linux上,要在没有NTP调整的情况下访问底层硬件时钟,您必须放弃Posix保留并使用CLOCK_MONOTONIC_RAW.

http://pubs.opengroup.org/onlinepubs/9699919799/functions/clock_gettime.html

相关内容

  • 没有找到相关文章

最新更新