Qt基础之十六:QtConcurrent和QThreadPool

目录

一.QtConcurrent

1.在单独的线程中运行函数

2.获取函数的返回值

3.使用成员函数

4.使用Lambda表达式

二.QThreadPool

1.基本使用

2.QRunnable与QThread的区别

3.信号和槽


一.QtConcurrent

QtCurrent模块能处理一些常见的并行计算:map、filter和reduce。它们返回一个QFuture对象,该对象可用于获取函数执行的结果。QFuture还可用于查询计算进度和暂停/恢复/取消计算。为了方便起见,QFutureWatcher可以通过信号和插槽与QFuture进行交互。
QtCurrent的map、filter和reduce算法自动将计算分布到所有可用的处理器核上,因此,当QtCurrent在多核系统上更有优势。
该模块还提供了QtConcurrent::run()函数,它可以在另一个线程中运行任何函数。QFuture可用于获取函数的返回值,并检查线程是否正在运行。但是,QtConcurrent::run()仅启动一个线程,无法暂停/恢复/取消,也无法查询计算进度。
本文中主要讨论QtConcurrent::run()的用法,使用QtConcurrent模块,需要在 .pro 中添加: QT += concurrent

1.在单独的线程中运行函数

extern void aFunction();
QFuture<void> future = QtConcurrent::run(aFunction)

此时函数aFunction运行于从默认QThreadPool获取的一个线程中。可以用QFuture和QFutureWathcer类来监控该函数运行的状态
如果用指定的QThreadPool,可以定义一个,并作为第

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

草上爬

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值