在 C++ 中获得可靠的单调时间(多平台)

Cat*_*lin 5 c++ time boost

我需要一个可用于计算间隔的单调时钟。要求:

  • 必须是单调的,不能受设备时间的影响。
  • 在应用程序会话期间不得重置。(会话中所有返回值的纪元相同)
  • 必须代表现实生活中的秒数(不是 cpu 秒),不得受到当时运行的线程/进程数量的影响。
  • 秒分辨率就足够了。

在我的研究中,我找到了候选人:

  • std::clock()(ctime)- 似乎使用 cpu 秒
  • boost::chrono::steady_clock()- 它使用 cpu 秒吗?申请期间可以更改纪元吗session(launch-end)?
  • 平台特定方法( clock_gettime, mach_absolute_time)。

您是否遇到过这样的问题,您选择了什么解决方案?多平台可靠吗steady_clock()?

Jur*_*aho 4

我会使用std::chrono::steady_clock。根据描述,它不受挂钟/系统时间变化的影响,最适合测量间隔。