QtTaskTree Namespace
QtTaskTree 命名空间包含 TaskTree 模块中的所有类和全局函数。更多内容...
| 头文件: | #include <QtTaskTree> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS TaskTree) target_link_libraries(mytarget PRIVATE Qt6::TaskTree) |
| qmake: | QT += tasktree |
| 自: | Qt 6.11 |
| 状态: | 技术预览 |
该命名空间处于技术预览阶段,内容可能会有变动。
类
(technology preview) class | Do |
(technology preview) class | Else |
(technology preview) class | ElseIf |
(technology preview) class | ExecutableItem |
(technology preview) class | ExecutionMode |
(technology preview) class | For |
(technology preview) class | Forever |
(technology preview) class | ForeverIterator |
(technology preview) class | Group |
(technology preview) class | GroupItem |
(technology preview) class | If |
(technology preview) class | Iterator |
(technology preview) class | ListIterator |
(technology preview) struct | ObjectSignal |
(technology preview) class | ParallelLimit |
(technology preview) class | QBarrier |
(technology preview) class | QCustomTask |
(technology preview) class | QDefaultTaskAdapter |
(technology preview) class | QMappedTaskTreeRunner |
(technology preview) class | QNetworkReplyWrapper |
(technology preview) class | QParallelTaskTreeRunner |
(technology preview) class | QProcessTaskDeleter |
(technology preview) class | QSequentialTaskTreeRunner |
(technology preview) class | QSingleTaskTreeRunner |
(technology preview) class | QStartedBarrier |
(technology preview) class | QSyncTask |
(technology preview) class | QTaskInterface |
(technology preview) class | QTaskTree |
(technology preview) class | QTcpSocketWrapper |
(technology preview) class | QThreadFunction |
(technology preview) class | QThreadFunctionBase |
(technology preview) class | RepeatIterator |
(technology preview) class | Storage |
(technology preview) class | Then |
(technology preview) class | UntilIterator |
(technology preview) class | When |
类型
| BarrierKickerGetter | |
| flags | CallDone |
| enum class | CallDoneFlag { Never, OnSuccess, OnError, OnCancel, Always } |
| enum class | DoneResult { Success, Error } |
| enum class | DoneWith { Success, Error, Cancel } |
| GroupItems | |
| QBarrierTask | |
| QNetworkReplyWrapperTask | |
| QProcessTask | |
| QStoredBarrier | |
| QTaskTreeTask | |
| QTcpSocketWrapperTask | |
| QThreadFunctionTask | |
| QTimeoutTask | |
| enum class | SetupResult { Continue, StopWithSuccess, StopWithError } |
| TreeDoneHandler | |
| TreeSetupHandler | |
| enum class | WorkflowPolicy { StopOnError, ContinueOnError, StopOnSuccess, ContinueOnSuccess, StopOnSuccessOrError, …, FinishAllAndError } |
变量
| const QtTaskTree::GroupItem | continueOnError |
| const QtTaskTree::GroupItem | continueOnSuccess |
| const QtTaskTree::ExecutableItem | errorItem |
| const QtTaskTree::GroupItem | finishAllAndError |
| const QtTaskTree::GroupItem | finishAllAndSuccess |
| const QtTaskTree::GroupItem | nullItem |
| const QtTaskTree::ExecutionMode | parallel |
| const QtTaskTree::ExecutionMode | parallelIdealThreadCountLimit |
| const QtTaskTree::ExecutionMode | sequential |
| const QtTaskTree::GroupItem | stopOnError |
| const QtTaskTree::GroupItem | stopOnSuccess |
| const QtTaskTree::GroupItem | stopOnSuccessOrError |
| const QtTaskTree::ExecutableItem | successItem |
函数
| QtTaskTree::ExecutableItem | barrierAwaiterTask(const QtTaskTree::QStoredBarrier &storedBarrier) |
| QtTaskTree::ObjectSignal<std::decay_t<Signal>> | makeObjectSignal(typename QtPrivate::FunctionPointer<Signal>::Object *object, Signal &&signal) |
| QtTaskTree::GroupItem | onGroupDone(Handler &&handler, QtTaskTree::CallDone callDone = CallDoneFlag::Always) |
| QtTaskTree::GroupItem | onGroupSetup(Handler &&handler) |
| QtTaskTree::ExecutableItem | signalAwaiterTask(const typename QtPrivate::FunctionPointer<Signal>::Object *sender, Signal signal) |
| QtTaskTree::ExecutableItem | timeoutTask(const std::chrono::milliseconds &timeout, QtTaskTree::DoneResult result = DoneResult::Error) |
| QtTaskTree::GroupItem | workflowPolicy(QtTaskTree::WorkflowPolicy policy) |
类
类Do
用于 For 和 When 结构的代码块元素。更多...
类Else
用于条件表达式的“else”元素。更多...
类ElseIf
用于条件表达式的“else if”元素。更多...
类ExecutableItem
可执行任务项的基类。更多...
classExecutionMode
描述执行模式的组元素。更多...
类For
一个 for 循环元素。更多...
类Forever
子任务的无限循环。更多...
类ForeverIterator
用于在 For 元素内部的无限迭代器。更多...
类Group
Group 代表了用于构建声明式配方(描述如何执行和处理嵌套的异步任务树)的基本元素。更多...
类GroupItem
GroupItem 表示可能作为任何Group 组成部分的基本元素。更多...
classIf
用于条件表达式的“if”元素。更多...
类Iterator
用作 For 元素内部迭代器的基类。更多...
类ListIterator
用于“For”元素内部的列表迭代器。更多...
classObjectSignal
类ParallelLimit
具有自定义限制的并行执行模式。更多...
类QBarrier
一种按需完成的异步任务。更多...
classQCustomTask
用于声明自定义任务项并定义其初始化处理程序和完成处理程序的类模板。更多...
类QDefaultTaskAdapter
一个类模板,提供QCustomTask 中使用的默认任务适配器。更多...
类QMappedTaskTreeRunner
一个具有指定 Key 类型的映射任务树执行控制器。更多...
classQNetworkReplyWrapper
QNetworkReply 和QNetworkAccessManager 的封装类。更多...
类QParallelTaskTreeRunner
一个并行任务树执行控制器。更多...
类QProcessTaskDeleter
QProcess 的自定义删除器,由QProcessTask 使用。更多...
类QSequentialTaskTreeRunner
一个顺序任务树执行控制器。更多...
类QSingleTaskTreeRunner
单任务树执行控制器。更多...
类QStartedBarrier
类QSyncTask
在其他任务之间同步执行自定义处理程序。更多...
类QTaskInterface
QTaskInterface 是一个用于适配自定义任务接口的辅助类。更多...
类QTaskTree
QTaskTree 类以声明式方式运行定义的异步任务树。更多...
类QTcpSocketWrapper
QTcpSocket 的封装类。更多...
类QThreadFunction
一个通过 QtConcurrent::run() 在单独线程中控制函数执行的类模板。更多...
类QThreadFunctionBase
QThreadFunction 类模板的基类。更多...
classRepeatIterator
用于 For 元素内部的循环迭代器。更多...
classStorage
用于在运行中的任务树中进行自定义数据交换的类模板。更多...
classThen
用于条件表达式的“then”元素。更多...
classUntilIterator
用于 For 元素内部的条件迭代器。更多...
classWhen
一种将主体的执行延迟至屏障推进后的元素。更多...
类型文档
[alias] BarrierKickerGetter
接受QStoredBarrier 并返回ExecutableItem 的函数的类型别名,即std::function<ExecutableItem(const QStoredBarrier &)> ,用于在When 构造函数中。
enum class QtTaskTree::CallDoneFlag
flags QtTaskTree::CallDone
此枚举是onGroupDone()元素或自定义任务构造函数的可选参数。它用于指示任务树何时应调用组或任务的完成处理程序。
| 常量 | 值 | 描述 |
|---|---|---|
QtTaskTree::CallDoneFlag::Never | 0 | 绝不会调用完成处理程序。 |
QtTaskTree::CallDoneFlag::OnSuccess | 1 << 0 | 仅在执行成功后(即 `DoneWith::Success` 时)才调用完成处理程序。 |
QtTaskTree::CallDoneFlag::OnError | 1 << 1 | 仅在执行失败后才会调用 done 处理程序,即当DoneWith::Error 时。 |
QtTaskTree::CallDoneFlag::OnCancel | 1 << 2 | “done” 处理程序仅在执行被取消后才会被调用,即当DoneWith::Cancel 时。 |
QtTaskTree::CallDoneFlag::Always | OnSuccess | OnError | OnCancel | “done” 处理程序总是会被调用。 |
CallDone 类型是QFlags<CallDoneFlag> 的 typedef。它存储 CallDoneFlag 值的或(OR)组合。
enum class QtTaskTree::DoneResult
该枚举可由组或任务的完成处理函数可选地返回。当完成处理函数未返回任何值时,即其返回类型为void ,其最终返回值将由正在运行的任务树自动推导出来,并上报给其父组。
当完成处理程序返回 `DoneResult` 时,您可以在处理程序内部调整最终返回值。
当组完成处理程序返回 DoneResult 时,将忽略该组的工作流策略。
此枚举在 TaskInterface::done() 信号中也会使用,它指示任务是成功完成还是出现错误。
| 常量 | 值 | 描述 |
|---|---|---|
QtTaskTree::DoneResult::Success | 0 | 组或任务的执行成功结束。 |
QtTaskTree::DoneResult::Error | 1 | 组或任务的执行以错误结束。 |
enum class QtTaskTree::DoneWith
此枚举是组或任务的完成处理程序的可选参数。它指示组或任务是成功完成、出现错误,还是被取消。
它还用作QTaskTree::done()信号中的参数,用于指示QTaskTree 执行的最终结果。
| 常量 | 值 | 描述 |
|---|---|---|
QtTaskTree::DoneWith::Success | 0 | 组或任务的执行成功结束。 |
QtTaskTree::DoneWith::Error | 1 | 组或任务的执行以错误结束。 |
QtTaskTree::DoneWith::Cancel | 2 | 该组或任务的执行已被取消。这种情况发生在用户对正在运行的任务树调用QTaskTree::cancel()时,或者当该组的工作流策略导致取消其部分正在运行的子任务时。当该组或任务的执行被取消时,通过在处理程序中返回DoneResult 来调整完成处理程序的最终结果将不产生任何效果。 |
[alias] QtTaskTree::GroupItems
[alias] QBarrierTask
QCustomTask<QBarrier> 的类型别名,用于在配方中使用。
[alias] QNetworkReplyWrapperTask
QCustomTask<QNetworkReplyWrapper>的类型别名,用于在配方中使用。
[alias] QProcessTask
为QCustomTask<QProcess> 定义类型别名,使用QProcessTaskDeleter ,供在配方中使用。
[alias] QStoredBarrier
QtTaskTree::Storage<QStartedBarrier> 的类型别名,用于在配方中使用。
[alias] QTaskTreeTask
QCustomTask<QTaskTree> 的类型别名,用于在配方中使用。
[alias] QTcpSocketWrapperTask
QCustomTask<QTcpSocketWrapper> 的类型别名,用于在配方中使用。
[alias] template <typename ResultType> QThreadFunctionTask
QCustomTask<QThreadFunction<ResultType>> 的类型别名,其中ResultType 指定线程函数的返回类型,用于在配方中。
[alias] QTimeoutTask
QCustomTask 的类型别名 <std::chrono::milliseconds> ,用于在配方中使用。std::chrono::milliseconds 用于设置超时时长。默认超时行为为std::chrono::milliseconds::zero() ,即当控制权返回正在运行的事件循环时,QTimeoutTask 立即结束。
使用示例:
using namespace std::chrono;
using namespace std::chrono_literals;
const auto onSetup = [](milliseconds &timeout) { timeout = 1000ms; }
const auto onDone = [] { qDebug() << "Timed out."; }
const Group root {
QTimeoutTask(onSetup, onDone)
};另请参阅 timeoutTask()。
enum class QtTaskTree::SetupResult
该枚举可选地由组或任务的初始化处理函数返回。它指示正在运行的任务树在初始化处理函数执行完成后应如何继续。
| 常量 | 值 | 描述 |
|---|---|---|
QtTaskTree::SetupResult::Continue | 0 | 默认值。组或任务的执行正常继续。当组或任务的初始化处理程序返回 void 时,默认视为返回了 Continue。 |
QtTaskTree::SetupResult::StopWithSuccess | 1 | 组或任务的执行立即成功停止。当从组的设置处理程序返回时,所有子任务将被跳过,并调用组的onGroupDone()处理程序,传入DoneWith::Success 。该组向其父级报告成功。 将忽略该组的流程策略。当从任务的设置处理程序返回时,该任务不会启动,其完成处理程序也不会被调用,且该任务会向其父级报告成功。 |
QtTaskTree::SetupResult::StopWithError | 2 | 组或任务的执行将立即因错误而停止。当从组的设置处理程序返回时,所有子任务将被跳过,并调用组的onGroupDone() 处理程序,传入参数为DoneWith::Error 。该组向其父级报告错误。 将忽略该组的流程策略。当从任务的设置处理程序返回时,任务不会启动,其错误处理程序也不会被调用,且该任务会向其父级报告错误。 |
[alias] QtTaskTree::TreeDoneHandler
std::function<void(constQTaskTree &,QtTaskTree::DoneWith)> 的类型别名。
TreeDoneHandler 是任务树运行器中用于调度任务树执行的函数的可选参数。当任务树运行器的配方执行完毕时,该函数会被调用。通过传入的参数可以访问QTaskTree 以及配方的结果。
任务树运行器还接受以下简写形式的处理程序:std::function<void(const QTaskTree &)> 、std::function<void(QtTaskTree::DoneWith)> 或std::function<void(void)> 。
[alias] QtTaskTree::TreeSetupHandler
std::function<void(QTaskTree &)> 的类型别名。
TreeSetupHandler 是任务树运行器中用于调度任务树执行的函数的可选参数。当任务树运行器即将执行其配方时,会调用该函数。通过传入的参数可访问QTaskTree 。
任务树运行器还接受采用std::function<void(void)> 简写形式的处理程序。
enum class QtTaskTree::WorkflowPolicy
此枚举描述了当任何组中的子任务执行完毕时,“Group”元素可能表现出的行为。当正在运行的“Group”被取消时,也会用到该枚举。
| 常量 | 值 | 描述 |
|---|---|---|
QtTaskTree::WorkflowPolicy::StopOnError | 0 | 默认值。对应于全局元素stopOnError 。如果任何子任务以错误结束,则组将停止并以错误结束。如果所有子任务均成功完成,则组以成功结束。如果组为空,则以成功结束。 |
QtTaskTree::WorkflowPolicy::ContinueOnError | 1 | 对应于全局元素continueOnError 。与stopOnError 类似,但若任何子任务以错误结束,执行将持续进行直至所有任务完成,随后组将报告错误,即使组中其他任务已成功完成。若所有子任务均成功完成,则组成功完成。若组为空,则组成功完成。 |
QtTaskTree::WorkflowPolicy::StopOnSuccess | 2 | 对应于全局元素stopOnSuccess 。如果任何子任务成功完成,该组将停止并以成功状态结束。如果所有子任务均以错误状态完成,该组将以错误状态结束。如果该组为空,则以错误状态结束。 |
QtTaskTree::WorkflowPolicy::ContinueOnSuccess | 3 | 对应于全局元素continueOnSuccess 。与stopOnSuccess 类似,但如果任何子任务成功完成,则执行将继续直至所有任务完成,随后该组报告成功,即使组内其他任务以错误结束也是如此。如果所有子任务均以错误结束,则该组以错误结束。如果该组为空,则以错误结束。 |
QtTaskTree::WorkflowPolicy::StopOnSuccessOrError | 4 | 对应于全局元素stopOnSuccessOrError 。该组将启动尽可能多的任务。当任何一个任务完成时,该组即停止并报告该任务的结果。仅在并行模式下有效。 在顺序模式下,仅启动第一个任务;该任务完成后,组也随之结束,因此其他任务始终被跳过。如果组为空,则以错误结束。 |
QtTaskTree::WorkflowPolicy::FinishAllAndSuccess | 5 | 对应于全局元素finishAllAndSuccess 。该组执行所有任务并忽略其返回结果。当所有任务完成后,该组以成功状态结束。如果该组为空,则以成功状态结束。 |
QtTaskTree::WorkflowPolicy::FinishAllAndError | 6 | 对应于全局元素finishAllAndError 。该组将执行所有任务并忽略其返回结果。当所有任务完成后,该组将以错误状态结束。如果该组为空,则以错误状态结束。 |
每当子任务的结果导致组停止执行时,即在采用 StopOnError、 StopOnSuccess 或 StopOnSuccessOrError 策略时,该组将取消其他正在运行的子任务(如有——例如在并行模式下),并跳过尚未开始执行的任务(例如在顺序模式下——位于失败任务之后的那部分任务)。 当使用“ParallelLimit ”时,可能会同时发生取消和跳过子任务的情况。
下表总结了各种工作流策略之间的差异:
| 工作流策略 | 执行所有子任务 | 结果 | 组为空时的结果 |
|---|---|---|---|
| StopOnError | 当任何子任务因错误而结束时,将停止并报告错误 | 当至少有一个子任务失败时返回错误,否则返回成功 | 成功 |
| ContinueOnError | 是 | 当至少一个子任务失败时返回错误,否则返回成功 | 成功 |
| 成功时停止 | 当任何子任务成功完成时停止,并报告成功 | 当至少有一个子任务成功时即视为成功,否则视为错误 | 错误 |
| 成功时继续 | 是 | 当至少有一个子任务成功时成功,否则报错 | 发生错误 |
| StopOnSuccessOrError | 当任何子任务完成时停止,并报告子任务的结果 | 成功或错误,具体取决于已完成的子任务的结果 | 报错 |
| FinishAllAndSuccess | 是 | 成功 | 成功 |
| 全部完成且出错 | 是 | 发生错误 | 发生错误 |
如果一个组的子组也是一个组,则该子组将根据其自身的流工作政策运行其任务。 当父组因其工作流策略而停止正在运行的子组时,即当父组使用了 StopOnError、StopOnSuccess 或 StopOnSuccessOrError 策略时,子组的结果将根据“结果”列以及上表中子组的工作流策略行进行报告。
变量文档
const QtTaskTree::GroupItem QtTaskTree::continueOnError
一个方便的全局组元素,用于描述ContinueOnError 工作流策略。
const QtTaskTree::GroupItem QtTaskTree::continueOnSuccess
一个方便的全局组元素,用于描述ContinueOnSuccess 工作流策略。
const QtTaskTree::ExecutableItem QtTaskTree::errorItem
一个方便的全局可执行元素,其中包含一个空的、有错误的、同步的任务。
这在 if 语句中非常有用,可表示分支以错误结束:
const ExecutableItem conditionalTask = ...;
Group group {
stopOnError,
If (conditionalTask) >> Then {
...
} >> Else {
errorItem
},
nextTask
};在上例中,如果conditionalTask 以错误结束,则选择Else 分支,该分支会立即以错误结束。这将导致nextTask 被跳过(因为group 的stopOnError 工作流策略),而group 则以错误结束。
另请参阅 successItem 。
const QtTaskTree::GroupItem QtTaskTree::finishAllAndError
一个方便使用的全局组元素,用于描述FinishAllAndError 工作流策略。
const QtTaskTree::GroupItem QtTaskTree::finishAllAndSuccess
一个方便的全局组元素,用于描述FinishAllAndSuccess 工作流策略。
const QtTaskTree::GroupItem QtTaskTree::nullItem
一个方便的全局组元素,用于表示无操作项。
这在条件表达式中非常有用,用于表示可选元素缺失:
const ExecutableItem task = ...;
const std::optional<ExecutableItem> optionalTask = ...;
Group group {
task,
optionalTask ? *optionalTask : nullItem
};const QtTaskTree::ExecutionMode QtTaskTree::parallel
一个便捷的全局组元素,用于描述并行执行模式。
在该组启动后,其所有直接子任务都会立即启动,无需等待之前的子任务完成。在此模式下,所有子任务将同时运行。
另请参阅 sequential 和ParallelLimit 。
const QtTaskTree::ExecutionMode QtTaskTree::parallelIdealThreadCountLimit
一个便捷的全局组元素,用于描述并行执行模式,其中同时运行的任务数量受到限制。该限制等于不包括调用线程在内的理想线程数。
这等同于:
另请参阅 parallel 和ParallelLimit 。
const QtTaskTree::ExecutionMode QtTaskTree::sequential
一个方便的全局组元素,用于描述顺序执行模式。
这是 Group 元素的默认执行模式。
当“Group”没有指定执行模式时,它将以顺序模式运行。 组的所有直接子任务都会按链式顺序启动,因此当一个任务完成时,下一个任务随即开始。这使您能够在下一个任务开始之前,将前一个任务的结果作为输入传递给它。此模式可确保只有在前一个任务完成后,下一个任务才会启动。
另请参阅 parallel 和ParallelLimit 。
const QtTaskTree::GroupItem QtTaskTree::stopOnError
一个便捷的全局组元素,用于描述StopOnError 工作流策略。
这是“Group”元素的默认工作流策略。
const QtTaskTree::GroupItem QtTaskTree::stopOnSuccess
一个方便的全局组元素,用于描述StopOnSuccess 工作流策略。
const QtTaskTree::GroupItem QtTaskTree::stopOnSuccessOrError
一个方便的全局组元素,用于描述StopOnSuccessOrError 工作流策略。
const QtTaskTree::ExecutableItem QtTaskTree::successItem
一个便捷的全局可执行元素,其中包含一个空的、成功完成的、同步任务。
这在 if 语句中非常有用,可用于指示某个分支以成功结束:
const ExecutableItem conditionalTask = ...;
const Group group {
stopOnSuccess,
If (conditionalTask) >> Then {
...
} >> Else {
successItem
},
nextTask
};在上例中,如果conditionalTask 以错误结束,则会选择Else 分支,该分支会立即成功结束。这将导致nextTask 被跳过(因为group 的stopOnSuccess 工作流策略),而group 则以成功结束。
另请参阅 errorItem 。
函数文档
QtTaskTree::ExecutableItem QtTaskTree::barrierAwaiterTask(const QtTaskTree::QStoredBarrier &storedBarrier)
返回一个“等待器”任务,该任务将在传入的storedBarrier 完成时结束。
注意: 传入的 storedBarrier 必须位于与返回的任务同级的配方中,或位于任何祖先配方Group 中,否则可能会导致程序崩溃。
template <typename Signal> QtTaskTree::ObjectSignal<std::decay_t<Signal>> QtTaskTree::makeObjectSignal(typename QtPrivate::FunctionPointer<Signal>::Object *object, Signal &&signal)
一个便捷函数,用于在传递给ExecutableItem::withCancel() 或ExecutableItem::withAccept() 的ObjectSignalGetter 函数内部创建ObjectSignal 。传入一个object 及其signal ,即可创建ObjectSignal 结构体的实例。
另请参阅 ObjectSignal 、ExecutableItem::withCancel() 和ExecutableItem::withAccept()。
template <typename Handler> QtTaskTree::GroupItem QtTaskTree::onGroupDone(Handler &&handler, QtTaskTree::CallDone callDone = CallDoneFlag::Always)
构建一个包含组完成处理程序的组元素。默认情况下,每当组执行完毕时,都会调用 `handler ` 方法。 若希望仅在执行成功、失败或被取消时调用该处理程序,请为callDone 参数传入非默认值。根据组的工作流策略,当正在运行的组被取消时(例如使用了stopOnError 元素),该处理程序也可能被调用。
传入的 `handler ` 属于 `std::function<DoneResult(DoneWith)> ` 类型。可选地,`DoneResult ` 类型的每个返回值或 `DoneWith ` 类型的参数均可省略(即其返回类型可以是 `void`)。有关可能的处理程序类型的更多信息,请参阅GroupItem::GroupDoneHandler 。
当调用handler 时,该组的所有子任务均已完成。
如果一个组包含 Storage 元素,则在存储器被销毁之前会调用handler ,以便handler 仍可对活动存储器的数据进行最后一次读取。
另请参阅 GroupItem::GroupDoneHandler 和onGroupSetup()。
template <typename Handler> QtTaskTree::GroupItem QtTaskTree::onGroupSetup(Handler &&handler)
构建一个存储组配置处理程序的组元素。每当组启动时,都会调用handler 。
传入的handler 可以是std::function<SetupResult()> 类型,也可以是std::function<void()> 类型。有关可能的处理程序类型的更多信息,请参阅GroupItem::GroupSetupHandler 。
当调用handler 时,该组的子任务均尚未开始运行。
如果一个组包含 Storage 元素,则在存储构造完成后才会调用handler ,以便handler 可能已经对活动存储执行了一些初始修改。
另请参阅 GroupItem::GroupSetupHandler 和onGroupDone()。
template <typename Signal> QtTaskTree::ExecutableItem QtTaskTree::signalAwaiterTask(const typename QtPrivate::FunctionPointer<Signal>::Object *sender, Signal signal)
返回一个“等待器”任务,当传入的sender 触发signal 时,该任务即完成。
注意: 与传入的sender 和signal 的连接 并非在返回的任务被创建或放入配方时建立,而是在任务被QTaskTree 启动时建立。请确保传入的sender 的存活时间长于包含该返回任务的任何正在运行的任务树。 如果signal 在任务启动前(即连接建立前)被发出,则该任务将在任务启动后首次发出signal 时结束。
QtTaskTree::ExecutableItem QtTaskTree::timeoutTask(const std::chrono::milliseconds &timeout, QtTaskTree::DoneResult result = DoneResult::Error)
创建一个持续时间为timeout 的QTimeoutTask ,该时间段结束后,任务将以result 结束。
另请参阅 QTimeoutTask 。
QtTaskTree::GroupItem QtTaskTree::workflowPolicy(QtTaskTree::WorkflowPolicy policy)
根据给定的policy ,构建组的workflow policy 元素。
为方便起见,也可使用全局元素代替。
另请参阅 stopOnError 、continueOnError 、stopOnSuccess 、continueOnSuccess 、stopOnSuccessOrError 、finishAllAndSuccess 、finishAllAndError 以及WorkflowPolicy 。
© 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.