c++ - 条件变量中的 gcc 错误::wait_for

标签 c++ gcc

在 gcc 的 std::condition_variable::cv.wait_for() 中似乎有一个错误。

如果在等待的过程中系统时间发生变化,会在错误的时间段后返回。

大多数情况下 - 如果时间移到过去,它就不会返回,或者如果时间移到 future ,它会立即醒来。

我认为原因是它使用系统时钟而不是 steady_clock ( https://github.com/gcc-mirror/gcc/blob/master/libstdc%2B%2B-v3/include/std/condition_variable#L67 )。

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

最佳答案

看起来标准同意你使用的时钟应该是std::chrono::steady_clock

§ 30.5.1

  1. Effects: as if
    return wait_until(lock, chrono::steady_clock::now() + rel_time, std::move(pred));

这个错误似乎也是 tracked海湾合作委员会的人已经。

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

关于c++ - 条件变量中的 gcc 错误::wait_for,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51483659/

相关文章:

c++ - 错误 : conflicting return type specified, 与平常不同

gcc:忽略无法识别的选项

c++ - 使用默认复制构造函数时出错 : "deleted function"

c++ - G++ 4.4 编译错误,低版本有效

C++ - QT - SIGNAL 和 SLOT 理解

C++从图中删除顶点

c - 如何使用 gcc 和 make 为每个优化级别编译成二进制文件?

c++ - C++ 中的重载 lambda 以及 clang 和 gcc 之间的区别

c - 变量的前置和后置增量操作在 TC 和 gcc 上给出不同的输出

c++ - 符号查找错误: Combining Executable and Library on 64bits