gpt4 book ai didi

c++ - std chrono 时间同步

转载 作者:太空狗 更新时间:2023-10-29 20:51:58 30 4
gpt4 key购买 nike

我需要通过网络发送一些带有时间戳的数据,这个时间应该具有高精度。查看 std::chrono 时钟我发现 std::chrono::*_clock::now() 返回 time_point 这取决于在时钟的时代。我没能找出每个时钟使用哪个纪元,以及在通过网络发送时可以安全使用其中的哪些纪元。例如,在 Windows 上,high_resolution_clock 是 QueryPerformanceCounter 的包装器,它具有很好的精度,但我认为,作为网络任务的时间戳没有用。

那么问题是如何通过网络“同步”高分辨率时钟?

最佳答案

std::chrono::system_clock的纪元目前未指定。然而,它是自 1970-01-01 00:00:00 UTC 以来的可移植时间度量,忽略了闰秒。这与所谓的Unix Time是一致的.

我目前正在努力 standardize this existing practice .我从 std::chrono::system_clock 的实现者那里得到了私有(private)的、非官方的保证他们不会在此期间改变现有做法。

另外两个std -定义计时时钟:high_resolution_clock , 和 steady_clock , 没有可移植定义的时代。

请注意 system_clock ,虽然它有一个(事实上的)便携纪元,但没有便携精度。在 clang/libc++ 上,精度为微秒。在 gcc 上,精度为纳秒,在 Windows 上,精度为 100ns。所以你可能time_point_cast<microseconds>(system_clock::now())获得便携精度。

关于c++ - std chrono 时间同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47658329/

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