C ++在循环中等待x secound

时间:2017-11-17 22:21:20

标签: c++

我想弄清楚如何在循环中等待。 我想要做的是单击程序上的按钮,如果发生错误,它将显示错误消息3秒而不是消失。所有这一切都在一个一直运行的循环中。 我已经尝试过ctime,睡觉等等。但是他们所有人都冻结了程序到时间已经结束。这不是我要找的东西。

我已经考虑过获取PC时钟和+ 3秒而不是if()检查时钟==时钟+ 3.但我没有找到方法来获取时钟时间并做什么我刚在想。而且我知道他们是一个很好的方式来做我想要的事情,但我还没弄明白怎么做。我最终冻结线程到时钟完成。

如果有人能够引导我朝着正确的方向前进,或者/并且可能会向我展示一些如何做到这一点的例子,那就太好了。

1 个答案:

答案 0 :(得分:1)

暂停主线程一段时间会冻结整个程序,无论您使用何种方式暂停。 我并不熟悉上面评论中提到的事件循环。但是我会使用std :: thread(c ++ 11)来完成任务,如果你不熟悉c ++ 11,还有许多其他非标准的创建线程的方法,即{{3}在Linux和Windows中,您可以使用链接中的pthread。 那么让我们来谈谈一些C ++: 例如,您可以编写一个函数来显示错误消息,等待几秒钟然后返回; 该函数将具有以下签名

void myFunction(char errMsg[], unsigned int durationSeconds);

然后你可以使用:

从主线程(你在显示消息的函数)中调用它
std::thread(myFunction("error message", 3));

现在回到你的问题,C ++ 11还提供了一种方便的方法,可以在没有while循环的情况下暂停一段时间,你可以使用下面的代码:

std::chrono::seconds interval(durationSeconds);
std::this_thread::sleep_for(interval);

在显示消息后写下它们,这应该有所帮助。