QtConcurrent

当我们想在一个或多个辅助线程执行的同时做一些后台处理且无须使用QThread所提供的全部功能和灵活性时,就可以使用QRunnable和QtConcurrent::run()方法.

QtConcurrent::run()函数的参数包含一个函数,一个或多个传递给函数的可选参数,它会在Qt全局线程池中的一个辅助线程中执行该函数

使用无阻塞QtConcurrent函数涉及到一些建立辅助线程的开销,以及在模型或图形场景数据的情况下建立替代项.如果每一项的进程足够复杂,这些开销就可以得到补偿,特别是在有大量的项需要处理的情况下.

QtConcurrent是对大是不是项进行复杂计算的理想选择,有些情况是处理一个或一些拥有复杂处理进程的项,而不牺牲用户因而的反馈性能.一种解决方法是使用QtConcurrent::run或QRunnable,如果希望更好地控制Qt的信号和槽机制,享受它所带来的便利,使用QThread或许是更好的选择.


#include<QThread>
#include<QtConcurrentRun>
#include<QDebug>

void fun(int i,int j)
{
qDebug() << i << j ;
}

int main()
{
QtConcurrent::run(fun,1,2);//和boost::bind有点类似
qDebug() << QThread::idealThreadCount();
}

1 2
2 //我想这或许是因为我的电脑是双核的


QtConcurrent还有过滤和映射一些功能.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值