本页内容

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() 的调用达到屏障的限制(默认值为 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.