QFutureSynchronizer 理论总结
一、概述
QFutureSynchronizer类是一个简化QFuture同步的便捷类。QFutureSynchronizer是一个模板类,它简化了一个或多个QFuture对象的同步。使用 addFuture() 或 setFuture() 函数添加 Future 。
futures():返回一个Futures 列表。
使用clearFutures() 从 QFutureSynchronizer 中删除所有的Future 。
二、使用
waitForFinished()函数等待所有的future完成。QFutureSynchronizer的析构函数调用waitForFinished(),提供了一种简单的方法来确保所有的future在从函数返回之前已经完成:
cpp
void someFunction()
{
QFutureSynchronizer<void> synchronizer;
...
synchronizer.addFuture(QtConcurrent::run(anotherFunction));
synchronizer.addFuture(QtConcurrent::map(list, mapFunction));
return; // QFutureSynchronizer waits for all futures to finish
}
waitForFinished() 的行为可以使用setCancelOnWait()函数来改变。
调用 setCancelOnWait(true) 将导致waitForFinished() 在等待所有Future 完成之前取消它们。
我们还可以使用cancelOnWait()函数查询取消等待特性的状态。