Qt开发:QtConcurrent介绍和使用

🏷️ 直播365足球 📅 2025-11-22 01:06:48 👤 admin 👀 8073 ❤️ 937
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 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 future = QtConcurrent::run(&worker, &Worker::multiply, 4, 6);

2.4 容器并行处理(map)

并发修改容器元素(原地修改)

QList numbers = {

1, 2, 3, 4, 5};

auto doubleIt = [](int &n) {

n *= 2;

};

QtConcurrent::map(numbers, doubleIt);

// 输出: 2 4 6 8 10

并发映射容器到新容器(mapped)

QList numbers = {

1, 2, 3};

auto square = [](int n) {

return n * n;

};

QList<

相关推荐

世界杯限定纪念册发售,收藏价值高
直播365足球

世界杯限定纪念册发售,收藏价值高

📅 10-24 👀 5383
提升效率必备VSCode运行快捷键全攻略
365bet提款到账时间

提升效率必备VSCode运行快捷键全攻略

📅 07-29 👀 6622