QFutureSynchronizer Class
template <typename T> class QFutureSynchronizerQFutureSynchronizer 类是一个简化QFuture 同步的便利类。更多
头文件: | #include <QFutureSynchronizer> |
CMake.QFutureSynchronizer | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
qmake: | QT += core |
- 所有成员(包括继承成员)的列表
- QFutureSynchronizer 属于线程类。
公共函数
QFutureSynchronizer() | |
QFutureSynchronizer(QFuture<T> future) | |
~QFutureSynchronizer() | |
void | addFuture(QFuture<T> future) |
bool | cancelOnWait() const |
void | clearFutures() |
QList<QFuture<T>> | futures() const |
void | setCancelOnWait(bool enabled) |
void | setFuture(QFuture<T> future) |
void | waitForFinished() |
详细说明
QFutureSynchronizer 是一个模板类,用于简化一个或多个QFuture 对象的同步。期货是使用addFuture() 或setFuture() 函数添加的。futures() 函数返回一个期货列表。使用clearFutures() 可从 QFutureSynchronizer 中移除所有期货。
waitForFinished() 函数等待所有期货结束。QFutureSynchronizer 的析构函数会调用waitForFinished() ,提供了一种简便的方法来确保在从函数返回之前所有期货都已完成:
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() 在等待所有期货结束前取消所有期货。您可以使用cancelOnWait() 函数查询取消等待功能的状态。
另请参阅 QFuture,QFutureWatcher, 以及 Qt Concurrent.
成员函数文档
QFutureSynchronizer::QFutureSynchronizer()
构造一个 QFutureSynchronizer。
[explicit]
QFutureSynchronizer::QFutureSynchronizer(QFuture<T> future)
构造 QFutureSynchronizer,并通过调用addFuture() 开始监视future 。
另请参阅 addFuture().
QFutureSynchronizer::~QFutureSynchronizer()
调用waitForFinished() 函数,以确保在销毁QFutureSynchronizer 之前所有期货都已结束。
另请参阅 waitForFinished() 。
void QFutureSynchronizer::addFuture(QFuture<T> future)
将future 添加到管理期货列表中。
另请参阅 futures().
bool QFutureSynchronizer::cancelOnWait() const
如果启用了 "等待时取消 "功能,则返回true
;否则返回 false。如果启用了 "等待时取消 "功能,那么waitForFinished() 函数将在等待期货结束之前取消所有期货。
另请参阅 setCancelOnWait() 和waitForFinished()。
void QFutureSynchronizer::clearFutures()
从QFutureSynchronizer 中删除所有管理期货。
另请参阅 addFuture() 和setFuture() 。
QList<QFuture<T>> QFutureSynchronizer::futures() const
返回所有管理期货的列表。
另请参阅 addFuture() 和setFuture()。
void QFutureSynchronizer::setCancelOnWait(bool enabled)
根据enabled 参数启用或禁用 "等待时取消 "功能。如果enabled 为真,则waitForFinished() 函数将在等待期货结束之前取消所有期货。
另请参阅 cancelOnWait() 和waitForFinished()。
void QFutureSynchronizer::setFuture(QFuture<T> future)
将future 设置为该QFutureSynchronizer 管理的唯一未来。这是一个便利函数,先调用waitForFinished() ,然后调用clearFutures() ,最后将future 传递给addFuture() 。
另请参见 addFuture()、waitForFinished() 和clearFutures()。
void QFutureSynchronizer::waitForFinished()
等待所有期货结束。如果cancelOnWait() 返回true
,则在等待每个期货结束前取消它们。
另请参阅 cancelOnWait() 和setCancelOnWait()。
© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.