条件变量中的gcc错误:: wait_for

时间:2018-07-23 16:44:32

标签: c++ gcc

似乎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),它将使用系统时钟。

有人遇到过这个问题吗?有什么解决方法?

1 个答案:

答案 0 :(得分:8)

似乎标准同意您的要求,所使用的时钟应为std::chrono::steady_clock

  

§30.5.1

     
      
  1. 效果:仿佛
      return wait_until(lock, chrono::steady_clock::now() + rel_time, std::move(pred));
  2.   

此错误似乎也已经由GCC的人员tracked

关于修复/解决方法,您可以: