`

QtConcurrent

    博客分类:
  • Qt
阅读更多
当我们想在一个或多个辅助线程执行的同时做一些后台处理且无须使用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还有过滤和映射一些功能.
分享到:
评论

相关推荐

    qtconcurrent 多线程并发处理

    qtconcurrent 多线程并发处理应用demo。开发环境Qt5.9.4

    QtConcurrent.rar

    QtConcurrent.rar

    Qt QtConcurrent 多线程 demo

    QtConcurrent的使用demo 代码是我写的demo 可直接运行,

    Qt之线程使用问题

    使用线程,遇到了一个问题,release模式正常,但debug模式崩溃,报如下错误: ASSERT failure in QCoreApplication::sendEvent: Cannot send events to objects owned by a different thread. Current thread 171107...

    Qt高级编程.rar

    Qt高级编程 完整带书签 高清PDF 带源码 作者: (英)Mark Summerfield ,《qt高级编程》以工程实践为主旨,是对qt现有的700多个类和上百万字参考文档中部分关键技术深入、全面的讲解和探讨,如丰富的网络/桌面应用...

    qt tcp多线程—实时创建和删除

    qt tcp服务器,一个socket连接一个线程,实时创建和删除,并将连接信息同步到界面,先上传这个,后续再优化为线程池管理的

    i2c-tools.zip

    i2c调试工具,其中包括i2cdetect i2cdump i2cget i2cset等工具,并且还有着i2ctools的用法说明pdf

    Qt 线程池(QThreadPool )的使用

    Qt 使用线程池 构建 多线程 多任务 代码是自己写的小demo 可以直接运行

    learn-qt-concurrent.zip

    #include &lt;QtConcurrent/QtConcurrent&gt; #include .cpp qDebug() 主线程" (); QtConcurrent::run([] () { qDebug() 子线程1" (); }); QtConcurrent::run([] () { qDebug() 子线程2" (); }); 运行结果...

    基于C++的沙氏大气激光雷达系统控制软件设计与实现

    沙氏大气激光雷达是近几年快速发展的一种大气...第二:针对沙氏大气激光雷达系统实时处理数据要求,本文采用QtConcurrent并发 技术执行数据处理,“QFutrue+QMutex”协调线程并发,QT信号槽机制进行多线程间消 息传递,Q

Global site tag (gtag.js) - Google Analytics