gpt4 book ai didi

c++ - 在 C++ 中可靠地比较不同机器的时间戳

转载 作者:行者123 更新时间:2023-11-30 01:09:11 26 4
gpt4 key购买 nike

我有三台机器 A, B, C 通过以太网连接。 A 将 UDP 数据包发送到 BB 将其转发到 C。我想可靠地测量传播时间。假设这三台机器使用本地 NTP 服务器 进行时间同步。

C++ 中生成时间戳的最佳方法是什么?我目前的猜测是 chrono。我的理解是它的 high_resolution_clock 在这里是不可能的,因为它可以使用像 CPU 寄存器这样的东西,在每次操作时递增。因此,这会根据机器的启动时间而有很大差异。相反,我将使用 steady_clock,它将使用同步的系统时间,但希望能防止我遇到闰秒之类的问题,如果我使用 system_clock,这很重要。

我的这些假设是否正确?有更好的方法吗?

最佳答案

稳定的时钟根本帮不了你,因为它不是挂钟,而且根据定义它可以不同步(它是稳定的,NTP 无法更改它)。所以你唯一的选择是挂钟/系统时钟。

然而,您的问题之一是通过 NTP 进行的时间同步不是很准确。如果您想以秒为单位比较时间戳,可能没问题。对于其他一切,您的时钟通常会偏离太远而无法提供良好的结果。

有专门的协议(protocol)来同步不同机器之间的时钟,例如PTP 和 gPTP。其中一些甚至需要专用硬件(如支持以太网 AVB 的硬件)。如果您需要精确度,那么您的首要研究应该是如何将这些集成到您的系统中以及如何读取它们的时间戳。

关于c++ - 在 C++ 中可靠地比较不同机器的时间戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40771907/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com