gpt4 book ai didi

c++ - 当 `sleep_until()` 指定过去的时间点时,行为是否明确?

转载 作者:可可西里 更新时间:2023-11-01 17:53:24 33 4
gpt4 key购买 nike

C++11 标准讨论了如果调整系统时钟应该发生什么,这样传递给 sleep_until() 的时间点现在已经过去了——但我看不到任何地方这解决了指定时间点已经过去的情况。

我是否只是忽略了一些东西,或者它真的没有指定 - 即使是 UB 或实现定义的?

如果以负持续时间调用 sleep_for(),则会出现类似的问题。

最佳答案

计算 sleep 时间和调用 sleep_until() 不是原子的。有可能您计算了时间,然后发生了上下文切换、系统过载、交换,并且对 sleep_until() 的实际调用发生得更晚。所以如果 sleep_until() 没有在时间过去时醒来,那么它就没用了,因为在这种情况下你永远无法确定你的线程会被唤醒。

该功能的要求在标准的第 30.2.4 节中指定。并且指定返回时间应该是Ct + Di + Dm 其中Ct是你指定的时间,Di是开销oof中断,函数返回和调度引起的延迟,Dm是资源争用引起的延迟。在这种情况下,Di 包括您调用 sleep_until() 之前耗时,函数会尽快返回。

关于c++ - 当 `sleep_until()` 指定过去的时间点时,行为是否明确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39848236/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com