文章目录
一、QtConcurrent 简介
QtConcurrent 是 Qt 提供的一个高级并发编程模块,属于 QtConcurrent 命名空间,旨在简化多线程任务的执行。它支持并行执行算法(如 map、filter、reduce),还支持异步任务运行和结果管理,不需要显式管理 QThread。
模块介绍
头文件包含:
#include <QtConcurrent>
模块依赖:
QT += concurrent
常用功能:

二、常用功能分类
2.1 异步运行一个函数(无返回值)
QtConcurrent::run([]() {
qDebug() << "后台线程中执行任务:" << QThread::currentThread();
});
2.2 异步运行一个带参数的函数(有返回值)
int add(int a, int b) {
return a + b;
}
QFuture<int> future = QtConcurrent::run(add, 3, 5);
// 后续获取结果
int result = future.result(); // 阻塞直到完成
qDebug() << "结果是:" << result;
2.3 绑定类成员函数
class Worker {
public:
int multiply(int x, int y) {
return x * y;
}
};
Worker worker;
QFuture<int> future = QtConcurrent::run(&worker, &Worker::multiply, 4, 6);
2.4 容器并行处理(map)
并发修改容器元素(原地修改)
QList<int> numbers = {
1, 2, 3, 4, 5};
auto doubleIt = [](int &n) {
n *= 2;
};
QtConcurrent::map(numbers, doubleIt);
// 输出: 2 4 6 8 10
并发映射容器到新容器(mapped)
QList<int> numbers = {
1, 2, 3};
auto square = [](int n) {
return n * n;
};
QList<

最低0.47元/天 解锁文章
1398

被折叠的 条评论
为什么被折叠?



