我必须每隔X秒调用一次函数来显示长时间运行的函数的进度,但是如果函数在进度更新的下一个滴答之前结束,我想删除通知。我刚刚开始使用C ++ 11,我不知道是否有办法使用正确的c ++ 11语法/对象来实现这一点。
基本上,我试图找出是否有办法使用C ++ 11线程和异步函数访问由posix函数timer_create和timer_delete公开的功能相同的功能。
我确实发现了这个问题“How to create timer events using C++ 11?”,它涵盖了我需要的几乎所有内容,但我无法弄清楚是否有办法在“提交”后停止异步调用。
现在可以在C ++ 11中使用吗?
答案 0 :(得分:4)
简单的解决方案是使其设置为在 N 时间单位中执行 f 的计时器可以潜在地进入睡眠状态 N 时间单位的,但如果某些事情中断了睡眠,我们就不应该执行任务 f 。
使用 std::condition_variable 可以轻松解决此问题,依赖于成员函数wait_for。如果函数没有收到中断,此函数将返回 false ,如果没有,则返回 true 。
待定样本实施