gpt4 book ai didi

c++ - 是否有 high_resolution_clock 不是 typedef 的标准库实现?

转载 作者:可可西里 更新时间:2023-11-01 18:37:37 28 4
gpt4 key购买 nike

20.12.7.3 的 C++ 草案内容如下:

high_resolution_clock may be a synonym for system_clock or steady_clock

当然这可能没有强制要求,但我想知道:

  • high_resolution_clock 对于 typedef 以外的东西有什么意义吗?
  • 有这样的实现吗?
  • 如果设计出一个滴答周期较短的时钟,它可以是稳定的也可以是不稳定的。因此,如果存在这样的机制,我们是否也想“改进”system_clockhigh_resolution_clock,再次默认为 typedef 解决方案?

最佳答案

规范之所以使用“可能”和“可以”等措辞,以及其他允许其他可能性的模糊词,是因为规范编写者不想(不必要地)限制“更好”的实现某事的解决方案。

想象一个系统,其中时间通常以秒计算,并且 system_clock就是 - system_clock::period将返回 1 秒。此时间存储为单个 64 位整数。

现在,在同一个系统中,也有一个以纳秒为单位的时间,但它存储为一个 128 位整数。由于这种大整数格式,由此产生的时间计算稍微复杂一些,对于只需要 1s 时间精度的人(在进行大量时间计算的系统中),您不希望拥有使用 high_precision_clock 的额外惩罚,当系统不需要它时。

至于现实生活中有没有这样的事情,我不太确定。关键是它不违反标准,如果您愿意这样实现的话。

请注意,稳定是“系统更改时间时发生的情况”的一个属性(例如,如果外部网络已关闭几天,并且系统中的内部时钟已偏离原子钟网络时间更新为)。使用 steady_clock将保证时间不会倒退或突然向前跳25秒。同样,当计算机系统中有“闰秒”或类似的时间调整时,也没有问题。另一方面,system_clock如果你给它一个超过夏令时或类似时间的前向持续时间,保证给你正确的新时间,其中 steady_clock无论如何,都会一小时又一小时地滴答作响。因此,选择正确的其中一个将影响在数字电视录像机中录制您喜欢的节目 - steady_clock会在错误的时间录制 [几年前我的 DTV 录像机犯了这个错误,但他们现在似乎已经修好了]。

system_clock还应考虑用户(或系统管理员)更改系统中的时钟,steady_clock不应该这样做。

再次,high_resolution_clock可能是也可能不是 steady - 由 C++ 库的实现者对 is_steady 给出适当的响应。 .

在4.9.2版本<chrono> ,我们发现这个 using high_resolution_clock = system_clock; ,所以在这种情况下它是一个直接的 typedef (用不同的名字)。但规范并不要求这样做。

关于c++ - 是否有 high_resolution_clock 不是 typedef 的标准库实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35682325/

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