c++ - 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 函数。
现在我希望每秒调用一次该函数,直到用户单击停止,同时避免他做其他事情。
有人能帮我吗?
解决方案
使用std::future
假设您的代码执行一次并且您将来会得到一些结果。所以这不是你的情况。您正在寻找的计时器可以实现为具有无限循环的独立线程,该线程会定期调用您的仿函数。请看这个决定:
https ://stackoverflow.com/a/30425945/149818
推荐阅读
- javascript - 您如何为 LinkedIn、Twitter 和 Facebook 等社交平台设置特色图片以拉入预览?
- jenkins - serveo.net 的多个隧道请求不起作用
- javascript - KonvaJS - 使用 Bootstrap 模态使其响应
- java - 暂停 Java 代码 (Netbeans),然后恢复执行
- html - 流体排版
- typescript - 打字稿返回类型取决于参数
- python - docker tensorflow与文件夹链接
- javascript - Angular-google-maps 获取标记坐标以绘制折线
- node.js - 从 nodejs 调用 https - 将数字 cer 文件放在哪里?
- algorithm - 询问带有 IP 内核的 FPGA 设计