任何人都可以澄清一下:steady_clock 在 C++ 中的线程之间是否值得信赖
Can anyone clarify: Is steady_clock trustworthy between threads in C++
任何人都可以确认(或否认)steady_clock 是否是线程之间的 "trustworthy"?根据文章 Is the epoch of steady_clock relative to when the operating system starts? or to the process itself?,有一些关于 steady_clock 在进程之间的系统级别是否值得信赖的讨论。我的问题是,steady_clock 至少在线程之间值得信赖吗?
我相信标准的相关部分 [time.clock.req]
规定了时钟 type 规定了纪元,只要您使用 steady_clock
, 线程无关:
A clock
is a bundle consisting of a duration
, a time_point
, and a function now()
to get the current time_point
. The origin of the clock’s time_point
is referred to as the clock’s epoch.
如果你不能通过减去两个 time_point
变量可靠地得到一个 duration
只是因为一个是在单独的线程中生成的,那将是一个糟糕的情况:-)
请注意,这仅适用于标准范围内。由于您链接到的问题是与单独的 进程有关, 该标准不以任何方式强制执行行为。
这与编写二进制 time_point
(甚至 int
)并期望在完全不同的系统上读回它时相同(例如,编写little-endian int
并尝试在 big-endian 系统上读回它。
但标准 确实 涵盖线程,因此您可以安全地将来自相同时钟类型的不同 time_point
变量视为兼容。
任何人都可以确认(或否认)steady_clock 是否是线程之间的 "trustworthy"?根据文章 Is the epoch of steady_clock relative to when the operating system starts? or to the process itself?,有一些关于 steady_clock 在进程之间的系统级别是否值得信赖的讨论。我的问题是,steady_clock 至少在线程之间值得信赖吗?
我相信标准的相关部分 [time.clock.req]
规定了时钟 type 规定了纪元,只要您使用 steady_clock
, 线程无关:
A
clock
is a bundle consisting of aduration
, atime_point
, and a functionnow()
to get the currenttime_point
. The origin of the clock’stime_point
is referred to as the clock’s epoch.
如果你不能通过减去两个 time_point
变量可靠地得到一个 duration
只是因为一个是在单独的线程中生成的,那将是一个糟糕的情况:-)
请注意,这仅适用于标准范围内。由于您链接到的问题是与单独的 进程有关, 该标准不以任何方式强制执行行为。
这与编写二进制 time_point
(甚至 int
)并期望在完全不同的系统上读回它时相同(例如,编写little-endian int
并尝试在 big-endian 系统上读回它。
但标准 确实 涵盖线程,因此您可以安全地将来自相同时钟类型的不同 time_point
变量视为兼容。