在本页

QtTaskTree::QBarrier Class

class QtTaskTree::QBarrier

按需完成的异步任务。更多

头文件: #include <qbarriertask.h>
CMake: find_package(Qt6 REQUIRED COMPONENTS TaskTree)
target_link_libraries(mytarget PRIVATE Qt6::TaskTree)
qmake: QT += tasktree
Qt 6.11
继承于 QObject
继承于

QtTaskTree::QStartedBarrier

注意:该类中的所有函数都是可重入的

公共函数

QBarrier(QObject *parent)
void advance()
qsizetype current() const
bool isRunning() const
qsizetype limit() const
std::optional<QtTaskTree::DoneResult> result() const
void setLimit(qsizetype value)
void start()
void stopWithResult(QtTaskTree::DoneResult result)

信号

void done(QtTaskTree::DoneResult result)

重实现保护函数

virtual bool event(QEvent *event) override

详细说明

QBarrier 等待对advance() 的后续调用达到 barrier 的极限(默认为 1)。它以DoneResult::Success 结束。

它通常用于QTaskTree 配方中,以保持后续顺序任务的执行,直到其他正在运行的任务提供一些设置后续任务所需的数据。

成员函数文档

[explicit] QBarrier::QBarrier(QObject *parent)

用给定的parent 构建一个 QBarrier。

void QBarrier::advance()

前进障碍。如果调用 advance() 的次数达到屏障的上限,屏障将以DoneResult::Success 结束。

qsizetype QBarrier::current() const

返回障碍物的当前前进计数。

[private signal] void QBarrier::done(QtTaskTree::DoneResult result)

该信号在障碍完成时发出,传递执行的最终result

注意: 这是一个私有信号。可以在信号连接中使用,但用户不能发出。

[override virtual protected] bool QBarrier::event(QEvent *event)

重实现:QObject::event(QEvent *e)。

bool QBarrier::isRunning() const

如果屏障当前正在运行,则返回true ;否则返回false

qsizetype QBarrier::limit() const

返回障碍物的电流限值。

另请参见 setLimit()。

std::optional<QtTaskTree::DoneResult> QBarrier::result() const

返回障碍执行的结果。如果屏障未启动或仍在运行,则返回的可选项为空。否则,将返回上次执行的结果。

void QBarrier::setLimit(qsizetype value)

设置value 的限制。启动后,当调用advance() 的次数达到上限时,障碍就会结束。

另请参阅 limit()。

void QBarrier::start()

启动屏障。

void QBarrier::stopWithResult(QtTaskTree::DoneResult result)

以给定的result 无条件停止正在运行的屏障。障碍的极限值将被忽略。

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