似乎gcc的std::condition_variable::cv.wait_for()
中存在错误。
如果系统时间在等待期间更改,它将在错误的时间段后返回。
大多数情况下-如果时间移至过去,它不会返回;如果时间移至未来,它将立即唤醒。
我认为原因是如果使用stable_clock(https://github.com/gcc-mirror/gcc/blob/master/libstdc%2B%2B-v3/include/std/condition_variable#L67),它将使用系统时钟。
有人遇到过这个问题吗?有什么解决方法?
答案 0 :(得分:8)
似乎标准同意您的要求,所使用的时钟应为std::chrono::steady_clock
。
§30.5.1
- 效果:仿佛
return wait_until(lock, chrono::steady_clock::now() + rel_time, std::move(pred));
此错误似乎也已经由GCC的人员tracked >
关于修复/解决方法,您可以:
libstdc++
的修复程序