这个主要用于: 不需要处理线程同步的多线程程序

    1. #include <QCoreApplication>
    2. #include <QtConcurrent/QtConcurrentRun>
    3. #include <QDebug>
    4. void hello(const QString &name)
    5. {
    6. qDebug() << "Hello" << name << "from" << QThread::currentThread();
    7. }
    8. int main(int argc, char *argv[])
    9. {
    10. QCoreApplication a(argc, argv);
    11. qDebug() << "Main Thread" << QThread::currentThread();
    12. // 在一个单独的线程中调用 hello()
    13. QFuture<void> f1 = QtConcurrent::run(hello, QString("Qter"));
    14. QFuture<void> f2 = QtConcurrent::run(hello, QString("Pythoner"));
    15. // 阻塞调用线程并等待计算完成,确保所有结果可用
    16. f1.waitForFinished();
    17. f2.waitForFinished();
    18. }

    输出结果:

    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包含它可能是一个错误。