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