首页 > 解决方案 > C++每秒运行异步函数

问题描述

我正在使用 Qt 开发一个 C++ 应用程序,我需要每秒异步运行一个函数。

该应用程序以这种方式工作:

对于其他功能,我使用了 Qt 集成的 SLOTS 和 SIGNALS,如下所示:

connect(timer, SIGNAL(timeout()), this, SLOT(updateView()));
timer->start(200);

但是对于这个特定的功能,我只想使用 C++ 功能,如thread、mutex、future、promise 和 asynch

我试过这样的事情:

if(cmd == start) {
    std::future<void> fn = async(std::launch::async, [](){
    // some code here
 });
}

这样,每次用户单击启动应用程序时,都会调用 lambda 函数。

现在我希望每秒调用一次该函数,直到用户单击停止,同时避免他做其他事情。

有人能帮我吗?

标签: c++multithreadingc++11asynchronous

解决方案


使用std::future假设您的代码执行一次并且您将来会得到一些结果。所以这不是你的情况。您正在寻找的计时器可以实现为具有无限循环的独立线程,该线程会定期调用您的仿函数。请看这个决定: https ://stackoverflow.com/a/30425945/149818


推荐阅读