gpt4 book ai didi

C++ 每秒运行一次异步函数

转载 作者:行者123 更新时间:2023-11-30 04:54:48 27 4
gpt4 key购买 nike

我正在使用 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

关于C++ 每秒运行一次异步函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53413092/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com