C ++ 11创建一个可以"停止"的计时器的方法。如果需要的话

时间:2014-06-11 19:49:34

标签: c++11

我必须每隔X秒调用一次函数来显示长时间运行的函数的进度,但是如果函数在进度更新的下一个滴答之前结束,我想删除通知。我刚刚开始使用C ++ 11,我不知道是否有办法使用正确的c ++ 11语法/对象来实现这一点。

基本上,我试图找出是否有办法使用C ++ 11线程和异步函数访问由posix函数timer_createtimer_delete公开的功能相同的功能。

我确实发现了这个问题“How to create timer events using C++ 11?”,它涵盖了我需要的几乎所有内容,但我无法弄清楚是否有办法在“提交”后停止异步调用。

现在可以在C ++ 11中使用吗?

1 个答案:

答案 0 :(得分:4)

简介

简单的解决方案是使其设置为在 N 时间单位中执行 f 的计时器可以潜在地进入睡眠状态 N 时间单位,但如果某些事情中断了睡眠,我们就不应该执行任务 f

使用 std::condition_variable 可以轻松解决此问题,依赖于成员函数wait_for。如果函数没有收到中断,此函数将返回 false ,如果没有,则返回 true

待定样本实施