使用
QFutureSynchronizer,比QFutureWatcher获取值老是不对,后来发现可以使用
QFutureWatcher好用很多!
QFutureSynchronizer<QList<int>> futures;
int nBlock=10;//假如有10个耗时操作
for (int i = 0; i < nBlock; i++)
{
int nOffset = 5000 * i;
QFuture<QList<int>> future = QtConcurrent::run(this, &Test::selectItem, map, nOffset);//执行耗时操作(如数据库查询)
futures.addFuture(future);
}
// 等待所有任务完成
futures.waitForFinished();
// 获取所有任务的返回值
QList<int> results;
for (int i = 0; i < futures.futures().size(); ++i) {
results.append(futures.futures().at(i).result());
}