【问题标题】:Get reliable monotonic time in c++(multiplatform)在 C++(多平台)中获得可靠的单调时间
【发布时间】:2014-03-31 00:58:43
【问题描述】:

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

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

在我的研究中我发现 候选人:

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

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

【问题讨论】:

    标签: c++ boost time


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      boost::chrono::steady_clock() - 它使用 cpu 秒吗?应用会话期间(启动结束)的时代可以改变吗?

      std::chrono::steady_clock() 指定使用实时秒数,在会话期间不调整。我认为 boost 的实现遵循了这一点。我对std::chrono::steady_clock 没有任何问题,只是某些平台上的分辨率低于其他平台。

      【讨论】:

        猜你喜欢
        • 2012-04-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-02-01
        • 2010-10-27
        • 2016-02-16
        • 2010-11-15
        相关资源
        最近更新 更多