这个主要用于: 不需要处理线程同步的多线程程序
#include <QCoreApplication>#include <QtConcurrent/QtConcurrentRun>#include <QDebug>void hello(const QString &name){qDebug() << "Hello" << name << "from" << QThread::currentThread();}int main(int argc, char *argv[]){QCoreApplication a(argc, argv);qDebug() << "Main Thread" << QThread::currentThread();// 在一个单独的线程中调用 hello()QFuture<void> f1 = QtConcurrent::run(hello, QString("Qter"));QFuture<void> f2 = QtConcurrent::run(hello, QString("Pythoner"));// 阻塞调用线程并等待计算完成,确保所有结果可用f1.waitForFinished();f2.waitForFinished();}
输出结果:
Main Thread QThread(0x398fc0) Hello “Qter” from QThread(0x39c240, name = “Thread (pooled)”) Hello “Pythoner” from QThread(0x39c280, name = “Thread (pooled)”)
注意:
QtConcurrent对PyQt5和PySide2是完全没有用的,因为QtConcurrent是一个名称空间,而不是一个类。
PyQt5和PySide2都不提供QtConcurrent提供的任何功能,因为它们都是基于模板的,因此无法包装。
PS:链接到的PySide文档适用于ReduceOption枚举。
由于怀疑该枚举是否在QtConcurrent命名空间之外有任何用途,因此PySide包含它可能是一个错误。
