C.M*_*.M. 4 c++ c++11 c++-chrono
基本上:
auto p1 = std::steady_clock::now().time_since_epoch().count();
... // do smth for unspecified period of time
auto p2 = std::steady_clock::now().time_since_epoch().count();
assert(p2 >= p1); // is this guaranteed?
Run Code Online (Sandbox Code Playgroud)
?
如果是 - 这是如何保证的?通过确保没有 C++ 程序运行时间超过std::steady_clock::duration::max() - std::steady_clock::duration::zero()?
像这个主题领域的许多事情一样,它很复杂......
是的,它保证steady_clock::now()永远不会换行,因为它保证它总是增加:
http://eel.is/c++draft/time.clock.steady
类对象
steady_clock代表时钟,其值time_point永远不会随着物理时间的前进而减少,并且其值以time_point相对于实时的稳定速率前进。也就是说,时钟可能不会被调整。
但...
这是如何保证的
从技术上讲,不可能永远拥有有限内存滴答的时钟并且永远不会超出范围。所以从技术上讲,答案是否定的。
但 ...
作为一种实用的方式,steady_clock计数的所有实现都nanoseconds使用有符号的 64 位整数类型。范围是 +/-292 年。epoch 通常是您的计算机最后一次启动。所以实际上,它不会在你的一生中结束。因此,当它结束时,这将是其他人的问题,并且所涉及的计算机将获得某种奖励,因为它具有如此长的正常运行时间。
PS:我等不及电脑手册出来了,上面写着:
必须至少每 292 年重新启动一次。
:-)
| 归档时间: |
|
| 查看次数: |
145 次 |
| 最近记录: |