gpt4 book ai didi

c++ - 是否确保 2 个连续的 std::chrono::steady_clock::now() 不相等?

转载 作者:行者123 更新时间:2023-12-02 17:39:43 26 4
gpt4 key购买 nike

我希望在同一运行线程中选取的时间点永远不会相等。这是因为我使用时间点来区分不同的计算结果。

伪代码:

StampedResult fn() {
auto result = Calculations();
auto time_stamp = std::chrono::steady_clock::now();
return {time_stamp, result);
}

现在,如果Calculations() 总是很复杂,那么就会自动解决。但有时,Calculations() 可能会立即返回。

所以,我想我应该检查对 steady_clock::now() 的 2 个连续调用是否可以返回相同的值,如下所示:

https://onlinegdb.com/BkiDAZRe8

onlinegdb.com 和我的笔记本电脑 Intel® Core™ i7-8750H CPU @ 2.20GHz 上,我从未得到相同的返回值。但考虑到 steady_clock 的纳秒精度,其他超高频处理器是否真的可以返回相同的值?

最佳答案

Is it ensured that 2 sequential std::chrono::steady_clock::now() will not be equal?

标准不保证这一点。引用最新草案:

[time.clock.steady]

Objects of class steady_­clock represent clocks for which values of time_­point never decrease as physical time advances and for which values of time_­point advance at a steady rate relative to real time.That is, the clock may not be adjusted.

保持不变满足“永不减少”的要求。

时钟的粒度有限,如果粒度小于调用now的频率,则理论上两次调用之间的值保持相同是可行的。调用的复杂性是对再次出现相同值的实际限制,但这是偶然的。

<小时/>

如果您希望避免重复值,那么您可以通过存储最后一个时间戳来切实防止这种可能性。如果新值等于或小于旧值,则将新值向上移动一个测量单位。如果存在三个相等的值,则“较少”部分成为可能,因此第二个值被推到第三个值之上。

关于c++ - 是否确保 2 个连续的 std::chrono::steady_clock::now() 不相等?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59774027/

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