`

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 多线程并发处理

    Qt库提供了一个强大的模块——qtconcurrent,使得开发者能够轻松地在Qt应用程序中实现多线程并行计算。本文将深入探讨qtconcurrent模块,以及如何在Qt5.9.4环境下使用它来创建高效的并发应用。 首先,qtconcurrent...

    Qt QtConcurrent 多线程 demo

    本篇将深入探讨QtConcurrent的相关知识点,并通过提供的"Qt QtConcurrent 多线程 demo"进行实例解析。 首先,我们了解下多线程的概念。多线程是指在一个进程中可以同时执行多个线程,这样可以提高程序的并发性和...

    QtConcurrent.rar

    QtConcurrent还提供了一些其他功能,如`QtConcurrent::threadCount()`可以获取当前系统可用的线程数,`QtConcurrent::boundingRect()`用于在多线程环境下计算几何图形的边界框,以及`QtConcurrent::reduce()`用于将...

    Qt界面阻塞,利用QtConcurrent解决

    超级好用已测试,亲测好使,通过QtConcurrent将界面加载耗时的内容拆分到子线程执行,再利用QFuture来获取执行完成状态及返回值结果。利用QApplication::processEvents(QEventLoop::AllEvents, 100);来不断刷新Qt...

    QtConcurrent run 成员函数demo

    使用Qtconcurrent run 成员函数demo

    Qt 线程池(QThreadPool )的使用

    此外,`QtConcurrent::mapped()`和`QtConcurrent::filtered()`等函数提供了对容器中元素进行并发处理的能力,这在数据处理、计算密集型任务中非常有用。 示例代码中的“ThreadPool1010”可能是一个包含以下部分的...

    ConcurrentComputationTest.rar

    本篇文章将深入探讨`Qt`中的一个关键特性:并行计算,特别是`QtConcurrent::run()`函数的使用,以及如何通过它来提升程序执行效率。 `QtConcurrent`是`Qt`框架的一个模块,主要设计用于支持多线程和并发计算。这个...

    learn-qt-concurrent.zip

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

    Qt中的两种线程启动运行方式

    总结一下,Qt提供了两种启动线程的方法:一是继承自QThread并重写`run()`方法,二是使用`QtConcurrent::run()`和`QRunnable`。选择哪种方式取决于具体需求,如是否需要自定义线程行为、线程间通信的复杂性以及对资源...

    QT线程QThread的推荐用法

    `QtConcurrent::run()`是Qt并发库的一部分,它提供了在后台线程执行函数的能力,而无需直接创建QThread对象。这种方法更为简洁,且易于管理,因为函数执行完毕后,相关线程会自动结束,减少了手动管理线程的复杂性。...

    QtThread_handletaj_dozenjqq_thread_

    在Qt中,创建线程通常有两种方式:一是继承`QThread`类,二是使用`QRunnable`配合`QtConcurrent`。这里,由于提到了`dozenjqq_thread`,我们猜测它可能是自定义的`QThread`子类,用于实现线程的逻辑。 1. 继承...

    Qt并行计算

    2. **QtConcurrent**:这是Qt并发的核心模块,提供了高级的并发工具,如`run()`, `map()`, `filter()`, `reduce()`等函数,可以方便地执行异步任务,而无需直接操作线程。 3. **QFuture**:表示异步操作的结果,...

    zjyvisualparallel.rar_Qt 并行_qt 三维_地震_地震数据

    - Qt还提供了QtConcurrent模块,提供了一组高级函数和类,如`QtConcurrent::run()`和`QtConcurrent::mapped()`,用于在后台线程中运行函数或函数对象,方便实现并行计算。 2. **Qt三维可视化**: - Qt3D是Qt的一...

    【QT】06 Lambda表达式文章代码

    通过配合`QtConcurrent::run`,可以使用Lambda在后台线程执行耗时操作,提高程序响应性: ```cpp QFuture&lt;void&gt; future = QtConcurrent::run([=]{ // 耗时操作 }); ``` 此外,Lambda表达式也可以与`QVector`、`...

    qt多线程实例,数据处理和UI显示

    在处理数据时,我们通常会使用`Qt`的异步编程模型,如`QFuture`、`QtConcurrent`和`QSignalMapper`等。`QtConcurrent`提供了一系列函数,如`run()`、`mapped()`等,可以方便地将任务放入工作线程池。`QFuture`代表...

    Qt高级编程.rar

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

    02_ThreadPro_QT多线程_QT实例_QT_QT多线程_线程_

    `QtConcurrent`提供了一些方便的函数,如`run()`、`mapped()`等,可以将任务分发到后台线程执行,结果通过`QFuture`返回。`QFutureWatcher`可以监控`QFuture`的状态,当结果可用或完成时触发信号。 在实际开发中,...

    Qt多线程服务器

    QRunnable是一个抽象类,可以包含任何可执行的代码,而QtConcurrent则提供了方便的函数来并发执行这些任务,无需直接处理线程。 **4. 线程同步与通信** 在多线程环境下,线程同步和通信是至关重要的。Qt提供以下几...

    QT.rar_qt 源码

    9. **并发编程**:提供线程支持,以及QtConcurrent模块,简化多核处理器上的并行计算。 10. **QML**:一种声明式语言,用于创建丰富的用户界面,结合JavaScript实现动态行为。 在QT.txt文件中,可能包含了对Qt源码...

    qt下载管理器源码.zip

    QT框架主要包括以下几个部分:QWidgets(用于创建图形用户界面),QtNetwork(处理网络通信),QtMultimedia(多媒体支持)以及QtConcurrent(并行计算和异步任务处理)。在下载管理器中,主要涉及的是QtNetwork和...

Global site tag (gtag.js) - Google Analytics