Boost C++ 库

...世界上最受尊敬和专业设计的 C++ 库项目之一。 Herb SutterAndrei Alexandrescu,《C++ 编码标准

PrevUpHomeNext

第 5 章。Boost.Chrono 2.0.8

Howard Hinnant

Beman Dawes

Vicente J. Botet Escriba

根据 Boost 软件许可协议 1.0 版发布。(请参阅随附文件 LICENSE_1_0.txt 或在 https://boost.ac.cn/LICENSE_1_0.txt 复制副本)

目录

概述
动机
描述
用户指南
入门
教程
示例
外部资源
参考
头文件 <boost/chrono/include.hpp>
包含在 C++11 建议中
Chrono I/O V1
Chrono I/O V2
Chrono 舍入实用程序
其他时钟
附录
附录:历史
附录:原理
附录:实现说明
附录:FAQ
附录:致谢
附录:未来计划

]

]

时间究竟是什么?如果没人问我,我知道;如果我必须向问我的人解释,我就不知道了。

-- 奥古斯丁

如何使用本文档

本文档使用以下命名和格式约定。

  • 代码采用 fixed width font 字体,并进行语法高亮显示。
  • 您需要提供的可替换文本以 italics 字体显示。
  • 自由函数以代码字体呈现,后跟 (),如 free_function() 中所示。
  • 如果名称指的是类模板,则像这样指定:class_template<>;也就是说,它以代码字体显示,并且其名称后跟 <> 以指示它是类模板。
  • 如果名称指的是类似函数的宏,则像这样指定:MACRO();也就是说,它以代码字体大写,并且其名称后跟 () 以指示它是类似函数的宏。类似对象的宏不带尾随的 () 出现。
  • 在通用编程意义上指代 概念 的名称以 CamelCase 形式指定。
[Note] 注意

此外,诸如此类的注释指定了提供额外背景或原理的非必要信息。

最后,您可以将以下内容添加到本文档中的任何代码片段中

// Include all of Chrono files
#include <boost/chrono.hpp>
时间

我们每天都在生活中处理时间。自从出生以来,我们就凭直觉知道它。因此,我们都非常熟悉它,并认为它是一件简单的事情。在计算机程序中对时间建模也应该同样简单。不幸的是,这种感知到的简单性只是表面现象。幸运的是,我们不需要非常复杂的解决方案来满足我们的大部分需求。但是,过于简单的解决方案可能是危险且效率低下的,并且无法随着计算机行业的发展而适应。

Boost.Chrono 实现了 C++11 中的新时间工具,正如 N2661 - 赖以入眠的基础 中提出的那样。该文档提供了关键设计决策的背景和动机,并且是本文档中大量信息的来源。

除了标准提案提供的时钟外,Boost.Chrono 还提供了特定的进程和线程时钟。

挂钟时间与系统和用户时间

为了使 Boost.Chrono 的计时工具更通用,该库提供了许多时钟,这些时钟是操作系统进程时间 API 的瘦包装器,从而可以提取进程的挂钟时间、用户 CPU 时间和系统 CPU 时间。挂钟时间是 CPU 时间和系统 CPU 时间的总和。(在类 POSIX 系统上,这依赖于 times()。在 Windows 上,这依赖于 GetProcessTimes()。)

Boost.Chrono 库提供

标准
其他时钟

为了使计时工具更通用,Boost.Chrono 提供了许多时钟,这些时钟是操作系统时间 API 的瘦包装器,从而可以提取挂钟时间、用户 CPU 时间、进程花费的系统 CPU 时间,

最后,Boost.Chrono 包括用于 durationtime_pointtypeof 注册,以允许将模拟的 auto 与 C++03 编译器一起使用。

I/O

它为 durationtime_point 提供 I/O。此 I/O 使这些类型的使用更加方便。为了遵循“您只需为您使用的东西付费”的理念,此额外功能位于与 <boost/chrono/chrono.hpp> 分开的头文件中,即 <boost/chrono/chrono_io.hpp>。

它构建于 <boost/ratio/ratio_io.hpp> 之上,为 <boost/chrono.hpp> 中的类型提供可读且灵活的格式化和解析。此文本表示尽可能使用 SI 前缀。这使得 boost::milliseconds 可以用文本“milliseconds”表示,或者假设的 meter 类可以打印出“millimeter”。durationtime_point i/o 可以通过新的 facet 自定义:duration_unitstime_point_units。用户可以专门化这些 facet,以便 chrono i/o 可以本地化。但是 Boost.Chrono 不提供完整的区域设置解决方案。

system_clock::time_point I/O 是根据 UTC 时间点提出的,强烈遵循 ISO 9899:1999,《编程语言 - C》,ISO 9945:2003,《信息技术 - 可移植操作系统接口 (POSIX)》和 ISO 8601:2004,《数据元素和交换格式 - 信息交换 - 日期和时间的表示》。

舍入实用程序

一些用于处理持续时间的简单舍入实用程序函数。

买者自负

操作系统提供的底层时钟受许多看似任意的策略和实现不规则性的影响。这是一种礼貌的说法,意思是它们往往不可靠,并且每个操作系统甚至每个时钟都有其自身残酷和不寻常的不可靠形式。不要把全部赌注都押在它们的准确性上,除非您已经深入了解了特定操作系统正在保证什么,而这通常很少。


PrevUpHomeNext