qt实现异步调用函数的两种方法

根据我个人的理解,异步调用即是非阻塞的运行函数,对于异步调用的函数,即使没有执行完毕程序也会往下执行,如线程函数的创建,而同步调用为阻塞式的执行函数,当前函数未执行完毕,程序不会往下运行。在qt程序中,若想实现异步调用函数,可以通过以下两种方法实现

方法一:使用c++的std::async()
使用时需要在项目文件中加入c++11支持

QMAKE_CXXFLAGS += -std=c++11

所需头文件

#include<future>

函数原型:

future<typename result_of<Fn(Args...)>::type> async(launch policy, Fn&& fn, Args&&...args);

对于launch policy,可以是:

std::launch::async //异步执行
std::launch::deferred //同步执行
std::launch::async | std::launch::deferred //异步或同步执行,取决于操作系统

fn是调用的函数名,args为函数参数
使用get、wait、wait_for、


版权声明:本文为m0_60352504原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。