【发布时间】:2018-01-02 19:00:28
【问题描述】:
下面的代码是否正确
添加事件:
pushEvent(std::chrono::steady_clock::now() + dt, event_obj);
在事件循环中:
//...
auto now=std::chrono::steady_clock::now();
if(event.expireTime<=now)
{
event.fire();
}
//...
我有点担心环绕行为,因为我知道至少有两个错误 [1] 和 [2],这是由于时间计数器的环绕而引入的。我认为可能发生的事情:
事件触发早,因为
std::chrono::steady_clock::now() + dt将小于std::chrono::steady_clock::now()-
事件触发延迟,因为
std::chrono::steady_clock::now()可能已经有一个环绕。[1]https://www.cnet.com/news/windows-may-crash-after-49-7-days/
【问题讨论】:
标签: c++11 integer-overflow chrono