看起来gcc的std::condition_variable::cv.wait_for()
存在一个bug。
如果在等待期间系统时间发生更改,将会返回错误的时间。
最常见的情况是:如果时间被调整到过去,则根本不会返回;如果时间被调整到未来,则立即唤醒。
我认为原因是它使用的是系统时钟而不是稳定时钟 (https://github.com/gcc-mirror/gcc/blob/master/libstdc%2B%2B-v3/include/std/condition_variable#L67)。
有人遇到过这个问题吗?有什么解决办法吗?