我有一个类似的课程
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,我看过教程,他们都只是针对不是函数的类?
答案 0 :(得分:4)
如果您需要在单独的线程上运行某个函数,可以像这样使用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.