Qt::线程::QtConcurrent

 

QtConcurrent 是命名空间 (namespace),它提供了高层次的函数接口 (APIs),使所写程序,可根据计算机的 CPU 核数,自动调整运行的线程数目。

 

使用 QtConcurrent 模块,需要在 .pro 中添加: QT += concurrent 

 

#include "qtconcurrentrun.h"
using namespace QtConcurrent;

 

void func(QString name)
{
    qDebug() << name << "from" << QThread::currentThread();
}

QFuture<void> f1 = run(func, QString("QFuture<void> f1"));
f1.waitForFinished();

 

指定线程池,可以将线程池的指针作为第一个参数传递进去
extern void func();
QThreadPool pool;
QFuture<void> future = QtConcurrent::run(&pool, func); 

 

向该函数传递参数,需要传递的参数,则跟在函数名之后,依次加入 
extern void FuncWithArguments(int arg1, const QString &string);
QFuture<void> future = QtConcurrent::run(FuncWithArguments,integer,string); 

 

获取该函数的计算结果 
extern QString Func(const QByteArray &input);
QFuture<QString> future = QtConcurrent::run(func, byte_array);
QString result = future.result(); 

 

posted @ 2021-12-02 16:59  osbreak  阅读(167)  评论(0编辑  收藏  举报