Qt开发:QtConcurrent介绍和使用
文章目录
一、QtConcurrent 简介
二、常用功能分类
2.1 异步运行一个函数(无返回值)
2.2 异步运行一个带参数的函数(有返回值)
2.3 绑定类成员函数
2.4 容器并行处理(map)
三、线程池控制
四、取消任务
五、典型应用场景
六、完整示例:并发下载图片
一、QtConcurrent 简介
QtConcurrent 是 Qt 提供的一个高级并发编程模块,属于 QtConcurrent 命名空间,旨在简化多线程任务的执行。它支持并行执行算法(如 map、filter、reduce),还支持异步任务运行和结果管理,不需要显式管理 QThread。
模块介绍 头文件包含:
#include
模块依赖:
QT += concurrent
常用功能:
二、常用功能分类
2.1 异步运行一个函数(无返回值)
QtConcurrent::run([]() {
qDebug() << "后台线程中执行任务:" << QThread::currentThread();
});
2.2 异步运行一个带参数的函数(有返回值)
int add(int a, int b) {
return a + b;
}
QFuture
// 后续获取结果
int result = future.result(); // 阻塞直到完成
qDebug() << "结果是:" << result;
2.3 绑定类成员函数
class Worker {
public:
int multiply(int x, int y) {
return x * y;
}
};
Worker worker;
QFuture
2.4 容器并行处理(map)
并发修改容器元素(原地修改)
QList
1, 2, 3, 4, 5};
auto doubleIt = [](int &n) {
n *= 2;
};
QtConcurrent::map(numbers, doubleIt);
// 输出: 2 4 6 8 10
并发映射容器到新容器(mapped)
QList
1, 2, 3};
auto square = [](int n) {
return n * n;
};
QList<