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();