STD计时时间同步
std chrono time synchronization
我需要通过时间戳通过网络发送一些数据,这次应该具有很高的精度。查看std::chrono
时钟,我发现std::chrono::*_clock::now()
返回time_point
,这取决于时钟的时期。我未能发现每个时钟都使用了哪个时期,并且在发送WIA网络时可以安全使用哪个时期。例如,在Windows High_resolution_clock上是围绕QueryPerformanceCounter
的包装器,它具有很好的精度,但我认为,作为网络任务的时间戳毫无用处。
所以问题是如何"同步"网络上的高分辨率时钟?
std::chrono::system_clock
's Epoch当前未指定。但是,这是自1970-01-01 00:00:00 UTC以来的时间量度,忽略了LEAP秒。这与所谓的unix时间一致。
我目前正在努力标准化这种现有实践。我有std::chrono::system_clock
实施者的私人,非正式的保证,他们不会在过渡期间改变现有的实践。
其他两个std
定义的计时时钟: high_resolution_clock
和 steady_clock
,没有适当定义的时期。
请注意,尽管system_clock
具有(feacto)便携式时期,但没有便携式精度。在clang/libc 上,精度是微秒。在GCC上,精度是纳秒,在窗户上的精度为100n。因此,您可以time_point_cast<microseconds>(system_clock::now())
获得便携式精度。
如果要"高精度"(应该更好地指定)同步,则首先需要使所有网络设备与同一NTP服务器定期同步。您需要配置机器以每隔几分钟(或秒)调整时钟,因为更新后(有一些网络延迟,这会使它们在毫秒处不精确),时钟将开始漂移。
- C++为构建时间获取QDateTime的可靠方法
- 从持续时间构造std::chrono::system_clock::time_point
- 向量 <int> a {N, 0} 和 int arr a[N] = {0} 的时间复杂度有什么区别
- while循环中while循环的时间复杂度是多少
- 使用简单类型列表实现的指数编译时间.为什么
- 是否可以在编译时初始化数组,以便在运行时不会花费时间?
- 在已经使用Git的情况下减少编译时间
- 有没有一种方法可以创建一个带有哈希表的数据库,该哈希表具有恒定时间查找功能
- 如何将包含epoch时间的十六进制字符串转换为time_t
- 从文本文件中读取时钟时间和事件时间并进行处理
- 具有未知值时的时间复杂性
- 如何减少花费的时间
- C++在变量给定的指定时间内关闭电脑
- rcpp函数中的清理时间很长
- 松弛原子与无同步情况下的记忆连贯性
- C++:floor unix时间戳到UTC月份
- 如何在c++中录制具有精确帧时间戳的视频
- 使计时器在C++进程中的特定时间关闭,以便同步两个进程
- STD计时时间同步
- c++同步获取持续时间为float或long