GroupItem 类
class Tasking::GroupItemGroupItem 表示可能是任何 Group 组成部分的基本元素。 更多信息...
头文件 | #include <solutions/tasking/tasktree.h> |
继承自 |
注意: 该类中所有函数都是 可重入的。
公开类型
公开函数
GroupItem(const Tasking::Storage<StorageStruct> &storage) | |
GroupItem(const QList<Tasking::GroupItem> &items) | |
GroupItem(std::initializer_list<Tasking::GroupItem> items) |
详细说明
GroupItem 是可能作为任何 Group 组成部分的基本元素。它封装了任何 GroupItem 子类提供的功能。它是一个值类型,即使它是通过子类的构造函数最初创建的,也可以安全地复制 GroupItem 实例。
GroupItem 有四种主要类型
GroupItem 类型 | 简要描述 |
---|---|
CustomTask | 定义异步任务类型以及任务的启动、完成和错误处理器。用一个独特的任务名称别名,例如,ConcurrentCallTask<ResultType> 或 NetworkQueryTask 。异步任务是使用任务树的主要原因。 |
Group | 其他 group 项的容器。由于组是 GroupItem 类型,它可以嵌套在另一个组内部。组被视为其父级中的一个单独的异步任务。 |
包含 Storage 的 GroupItem | 使组的孩子任务能够交换数据。当包含 Storage 的 GroupItem 放入组内时,任务树在进入组之前实例化存储的数据对象,并在离开组后销毁它。 |
其他组控制项 | parallelLimit() 或 workflowPolicy() 返回的项影响组的行为。由 onGroupSetup() 或 onGroupDone() 返回的项定义了在组开始或结束执行时调用的自定义处理器。 |
成员类型文档
[别名]
GroupItem::GroupDoneHandler
为 std::function<DoneResult(DoneWith)>
或 DoneResult 提供类型别名。
GroupDoneHandler
是 onGroupDone() 元素的参数。任何具有上述签名的函数,当作为组完成处理器传递时,将在组执行结束时由正在运行的任务树调用。
DoneWith 参数是可选的,您的完成处理器可以省略它。如果提供,它包含有关将被报告给父级的组最终结果的信息。
返回的DoneResult值是可选的,您的处理器可以返回void
。在这种情况下,组的最终结果将与DoneWith参数指示的值相等。当处理器返回DoneResult值时,组的最终结果可能被返回值在done处理器体内的返回值调整。
对于DoneResult类型的GroupDoneHandler,不执行额外处理,组将无条件地结束,使用传递的DoneResult值,忽略组的作业策略。
另请参阅 onGroupDone(),GroupSetupHandler,和CustomTask::TaskDoneHandler。
[别名]
GroupItem::GroupSetupHandler
类型别名,为std::function<SetupResult()>
。
GroupSetupHandler
是onGroupSetup()元素的参数。任何具有上述签名的函数,当以组设置处理器形式传递,将在组执行启动时由运行任务树调用。
处理器的返回值指示在处理器调用完成后运行组应如何继续。默认返回值SetupResult::Continue指示组继续运行,也就是说,开始执行其子任务。返回值SetupResult::StopWithSuccess或SetupResult::StopWithError指示组跳过子任务的执行并于成功或错误立即结束。
当返回类型为SetupResult::StopWithSuccess或SetupResult::StopWithError时,组的done处理器(如果有提供)将被立即同步调用。
注意: 即使组设置处理器返回StopWithSuccess或StopWithError,组的done处理器也会被调用。这种行为与任务完成处理器的行为不同,未来可能会改变。
onGroupSetup()元素还接受缩写形式的std::function<void()>函数,即返回值为void
。在这种情况下,假定返回值为SetupResult::Continue。
另请参阅 onGroupSetup(),GroupDoneHandler,和CustomTask::TaskSetupHandler。
成员函数文档
template <typename StorageStruct> GroupItem::GroupItem(const Tasking::Storage<StorageStruct> &storage)
构造一个包含storage对象的GroupItem
元素。
当运行任务树进入包含此GroupItem的Group元素时,会动态创建一个StorageStruct
实例。
当组即将在执行后离开,先前实例化的StorageStruct
将被删除。
可从父元素 Group 的任何处理程序主体内部,包括嵌套组和其任务,通过 Storage::operator->(),Storage::operator*() 或 Storage::activeStorage() 方法访问动态创建的 StorageStruct
实例。
另请参阅存储。
GroupItem::GroupItem(const QList<Tasking::GroupItem> &items)
使用给定 items 列表构建一个 GroupItem
元素。
当这个 GroupItem
元素被 TaskTree 解析时,它只是简单地用其 items 替换。
当构造包含 GroupItem
元素列表的 Group 元素时,此构造函数很有用。
static QList<GroupItems> getItems(); ... const Group root { parallel, finishAllAndSuccess, getItems(), // OK, getItems() list is wrapped into a single GroupItem element onGroupSetup(...), onGroupDone(...) };
如果您想创建子树,请使用 Group。
另请参阅Group。
GroupItem::GroupItem(std::initializer_list<Tasking::GroupItem> items)
这是一个重载函数。
另请参阅GroupItem(const QList<Tasking::GroupItem> &items)。
©版权所有 Qt 公司 Ltd。 本文档的贡献者的文档版权属于他们自己。本处提供的文档是根据自由软件基金会发布的 GNU 自由文档许可协议版本 1.3 的条款授予的。Qt 及其相应的标志是芬兰 Qt 公司及其全球子公司和其他国家的商标。所有其他商标均为各自所有者的财产。