本页内容

QFutureSynchronizer Class

template <typename T> class QFutureSynchronizer

QFutureSynchronizer 类是一个便利类,用于简化对QFuture 的同步操作。更多内容...

头文件: #include <QFutureSynchronizer>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core

公共函数

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 是一个模板类,其中模板参数T 指定了待同步的QFuture 对象的结果类型。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
}

可以通过setCancelOnWait() 函数更改waitForFinished() 的行为。调用setCancelOnWait(true) 将导致waitForFinished() 在等待未来任务完成之前先取消所有未来任务。您可以使用cancelOnWait() 函数查询“等待时取消”功能的状态。

另请参阅 QFuture 、QFutureWatcher 以及 Qt Concurrent。

成员函数文档

QFutureSynchronizer::QFutureSynchronizer()

创建一个 QFutureSynchronizer。

[explicit] QFutureSynchronizer::QFutureSynchronizer(QFuture<T> future)

通过调用addFuture() 方法,构建一个 QFutureSynchronizer 并开始监听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 为true,则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()。

© 2026 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.