TaskAdapter 类

template <typename Task, typename Deleter = std::default_delete<Task>> class Tasking::TaskAdapter

实现自定义任务适配器的类模板。 更多...

头文件 #include <solutions/tasking/tasktree.h>
继承 Tasking::TaskInterface

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

受保护的函数

TaskAdapter()
Task *task()
const Task *task() const

详细说明

TaskAdapter 类模板负责创建类型为 Task 的任务,开始执行,并在任务完成后报告成功或错误。它还将适配器与给定的 Task 类型关联起来。

用实际的 Task 类型重实现此类,以便将任务接口适配到一般的 TaskTree 接口,以管理 Task 实例。

每个子类都必须提供一个公共默认构造函数,实现 start() 方法,并在任务完成后发出 done() 信号。使用 task() 来访问关联的 Task 实例。

要将您的任务适配器用于任务树中,创建一个对 Tasking::CustomTask 模板的别名,并将您的任务适配器作为模板参数传递

// Defines actual worker
class Worker {...};

// Adapts Worker's interface to work with task tree
class WorkerTaskAdapter : public TaskAdapter<Worker> {...};

// Defines WorkerTask as a new custom task type to be placed inside Group items
using WorkerTask = CustomTask<WorkerTaskAdapter>;

可选地,您可以将一个自定义的 Deleter 作为第二个模板参数传递给您的 TaskAdapter 子类所关联的 Task。当省略 Deleter 参数时,默认使用 std::default_delete<Task>。自定义的 Deleter 在运行任务的析构函数可能阻塞调用线程时很有用。而不是阻塞,自定义析构函数可以将运行的任务移到一个单独的线程中,并在那里实现阻塞销毁。这样,可以从调用线程的角度实现运行任务的快速销毁(具有阻塞的析构函数)。

有关实现自定义任务适配器的更多信息,请参阅任务适配器

另请参阅 start(),done() 和 task()。

成员函数文档

[保护] TaskAdapter::TaskAdapter()

为给定的 Task 类型创建任务适配器。

内部,它创建了一个 Task 实例,该实例可通过 task() 方法访问。可选提供的 Deleter 替代了 Task 析构函数。当省略 Deleter 时,默认使用 std::default_delete<Task>

另请参阅 task

[protected] Task *TaskAdapter::task()

返回关联的 Task 实例的指针。

[protected] const Task *TaskAdapter::task() const

这是一个重载函数。

返回关联的 Task 实例的 const 指针。

©2024 The Qt Company Ltd. 本文档中的内容贡献版权属于各自的所有者。本提供的文档遵守由自由软件基金会发布的 GNU 自由文档许可证版本 1.3 的条款。Qt 及相关标志是芬兰的 Qt 公司以及在世界其他地区的商标。所有其他商标均为各自所有者的财产。