我有一堂这样的课
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/