代码之家  ›  专栏  ›  技术社区  ›  Lee.HW

chrono库的实现

  •  2
  • Lee.HW  · 技术社区  · 7 年前

    chrono 图书馆处理时间。我认为它与CPU时钟是异步的。我是说, chrono::seconds(1) 是实1秒,与在此持续时间内执行的指令数无关。我说得对吗?

    如果我是对的,它是如何在低水平上工作的?在一般的现代计算机体系结构中,是否有计时器硬件与CPU时钟异步工作?

    1 回复  |  直到 7 年前
        1
  •  4
  •   Howard Hinnant    7 年前

    典型的现代电脑有两种报时方式,这两种方式在后台相互帮助。

    1. Time Stamp Counter 它只是一个特殊的寄存器,随着每个时钟周期递增。计算机也知道自己的周期时间,因此周期数可以转换为物理持续时间,例如纳秒。当操作系统提供“实时时钟”(C++11及更高版本中称为“实时时钟”)时,这就是最终使用的 std::chrono::steady_clock .

    2. 此外,现代计算机理解并参与 Network Time Protocol 时间戳计数器 NTP 每天数次,以保持其本地时间的准确性。在C++11及更高版本中,可以通过 std::chrono::system_clock .

    几十年前,个人电脑没有参与 相反,他问启动电脑的人当前的时间和日期,然后用它在船上 TSC

    使现代化

    请阅读 Peter Cordes 下面是我忽略的细节评论。