【发布时间】:2012-06-05 09:09:04
【问题描述】:
首先,我假设调用 std::chrono 的任何函数都保证是线程安全的(如果从不同的线程调用,没有未定义的行为或竞争条件或任何危险)。我说的对吗?
接下来,例如on windows there is a well known problem related to multi-core processors,即强制some implementations of time related systems to allow forcing a specific core to get any time information。
我想知道的是:
- 在标准中使用std::chrono,是否有任何保证不会出现think样的问题?
- 或者它是实现定义的
- 或者是否有明确的缺乏保证意味着在 Windows 上您最好始终从同一个内核获取时间?
【问题讨论】:
-
那篇知识库文章描述了一个硬件问题。它与Windows没有任何关系。使用该硬件计时器的任何操作系统也会出现同样的问题。不,C++ 标准中没有任何内容说“如果您在罕见的有缺陷的硬件上运行代码,则允许此类行为不良”。
-
我的理解是问题只出现在Windows上?无论如何,为什么要删除您的答案?此外,这并不能回答我提出的所有问题。
-
看知识库文章是怎么说的:“这个操作系统的行为是设计使然。当操作系统从芯片组获取不可靠的数据时,性能计数器调整是必要的。”。它可以发生在任何操作系统上。微软只是记录它,因为人们在那里经常遇到它,因此需要一篇知识库文章(部分原因是 Windows 被广泛使用,部分原因是它被广泛用于游戏,如果更频繁地使用高分辨率计时器)
-
我删除了答案因为它没有回答您提出的所有问题。我觉得它更适合作为评论:)
标签: c++ c++11 c++-standard-library