我有一堂这样的课

class Class1 : public QObject
{
    Q_OBJECT
    void a();
    void b();
    ...........

void Class1:a()
{
    for(int i=0;i<10;i++)
        b();//I want here to make parallel

           //and wait here all threads are done


}

我如何在这里使用 qhthread,我看过教程,它们都只针对类而不是函数?

最佳答案

如果需要在单独的线程上运行函数,可以像这样使用 QtConcurrent :

QtConcurrent::run(this, &Class1::b);

编辑: 您可以使用 QFutureSynchronizer 等待所有线程,不要忘记使用 QThreadPool::globalInstance()->setMaxThreadCount() 分配所有线程。

编辑 2: 您可以使用 synchronizer.futures() 来访问所有线程的返回值。

例子:
QThreadPool::globalInstance()->setMaxThreadCount(10);
QFutureSynchronizer<int> synchronizer;
for(int i = 1; i <= 10; i++)
    synchronizer.addFuture(QtConcurrent::run(this, &Class1::b));
synchronizer.waitForFinished();
foreach(QFuture<int> thread, synchronizer.futures())
    qDebug() << thread.result(); //Get the return value of each thread.

关于c++ - Qthread,给qthread添加函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20730448/

10-11 21:32