QFutureSynchronizer 类

template <typename T> class QFutureSynchronizer

The QFutureSynchronizer class is a convenience class that simplifies QFuture synchronization. More...

头文件 #include <QFutureSynchronizer>
CMakefind_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmakeQT += core

公共函数

QFutureSynchronizer()
QFutureSynchronizer(QFuture<T> future)
~QFutureSynchronizer()
voidaddFuture(QFuture<T> future)
boolcancelOnWait() const
voidclearFutures()
QList<QFuture<T>>futures() const
voidsetCancelOnWait(bool enabled)
voidsetFuture(QFuture<T> future)
voidwaitForFinished()

详细描述

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)

构建一个QFutureSynchronizer实例,并开始通过调用addFuture()()监视future.

另请参阅addFuture().

QFutureSynchronizer::~QFutureSynchronizer()

在销毁此QFutureSynchronizer之前,调用waitForFinished()函数以确保所有future都已完成。

另请参阅waitForFinished().

void QFutureSynchronizer::addFuture(QFuture<T> future)

future添加到管理future列表中。

另请参阅futures().

bool QFutureSynchronizer::cancelOnWait() const

如果启用cancel-on-wait特性,返回true;否则返回false。如果启用cancel-on-wait,则waitForFinished()函数将在等待它们完成之前取消所有future。

另请参阅setCancelOnWait()和waitForFinished().

void QFutureSynchronizer::clearFutures()

从该QFutureSynchronizer中删除所有管理的future。

另请参阅addFuture()和setFuture().

QList<QFuture<T>> QFutureSynchronizer::futures() const

返回所有管理future的列表。

另请参阅addFuture()和setFuture().

void QFutureSynchronizer::setCancelOnWait(bool enabled)

根据enabled参数启用或禁用cancel-on-wait特性。如果enabled为true,则waitForFinished()函数将在等待它们完成之前取消所有future。

另请参阅cancelOnWait()和waitForFinished().

void QFutureSynchronizer::setFuture(QFuture<T> future)

future设置为该QFutureSynchronizer管理的唯一future。这是一个便利函数,它首先调用waitForFinished(),然后clearFutures(),最后将future传递给addFuture().

另请参阅addFuture()、waitForFinished()和clearFutures().

void QFutureSynchronizer::waitForFinished()

等待所有future完成。如果cancelOnWait()返回true,则在等待它们完成之前将取消每个future。

另请参阅cancelOnWait()和setCancelOnWait().

© 2024 Qt公司有限公司。本文件中包含的文档贡献归各自所有者所有版权。提供的文档根据GNU自由文档许可证1.3版条款进行许可,该许可证由自由软件基金会发布。Qt及其相关标志是芬兰以及/或全球其他国家的Qt公司商标。所有其他商标均为其各自所有者的财产。