带有sleep_for和sleep_until函数的gcc可能出现的问题

问题描述 投票:0回答:1

gcc似乎对sleep_for和sleep_until函数(名称空间std :: this_thread的函数)有问题。我用将来和条件变量做一些简单的例子。 gcc实际上使用系统时钟,而不是单调时钟,这会导致时间跳变。在我的示例中,在某些情况下,时钟之后跳,而我的超时立即终止。 (我不发布示例代码,因为这是非常简单的测试,因此我将其丢弃)

我看到在将来的gcc 10版本中,该错误可能已解决,但是在重新发布gcc的新版本之前,是否有针对此问题的解决方案?有人注意到了吗?

c++ gcc time thread-sleep systemtime
1个回答
0
投票

这确实是一个令人惊叹的错误,已在GCC 10中修复(bug 41861<condition_variable>的上下文中对其进行了描述。] >>

[在我遇到这个问题的那一天,很想依靠Boost来获得适当的行为,但是even that was broken until 1.61。如今,无论如何,将Boost和标准的计时/线程代码混在一起还是很奇怪的。

当时我所做的是创建一个直接包装POSIX功能的condition_variable的替代品。

无论您使用sleep_for / sleep_until做什么,我都怀疑您无能为力,只能做同样的事情,对不起。

© www.soinside.com 2019 - 2024. All rights reserved.