2.4 KiB
2.4 KiB
ITask / Task
命名空间: XCEngine::Threading
类型: class (abstract) / enum
描述: 任务基类抽象接口和任务状态/优先级枚举定义。
概述
ITask 是任务系统的核心抽象基类。用户需要继承此类并实现 Execute() 方法来定义具体的任务逻辑。任务系统通过引用计数自动管理任务生命周期。
TaskPriority 枚举
任务优先级枚举(数值越小优先级越高)。
| 值 | 描述 |
|---|---|
Critical |
关键优先级(0) |
High |
高优先级(1) |
Normal |
普通优先级(2) |
Low |
低优先级(3) |
Idle |
空闲优先级(4) |
TaskStatus 枚举
任务状态枚举。
| 值 | 描述 |
|---|---|
Pending |
等待中 |
Scheduled |
已调度 |
Running |
运行中 |
Completed |
已完成 |
Failed |
失败 |
Canceled |
已取消 |
ITask 公共方法
生命周期
| 方法 | 描述 |
|---|---|
virtual void Execute() = 0 |
任务执行逻辑(纯虚) |
virtual void OnComplete() {} |
任务完成回调(可重写) |
virtual void OnCancel() {} |
任务取消回调(可重写) |
属性
| 方法 | 描述 |
|---|---|
TaskPriority GetPriority() const |
获取优先级 |
TaskStatus GetStatus() const |
获取状态 |
uint64_t GetId() const |
获取任务 ID |
void SetId(uint64_t id) |
设置任务 ID |
void SetPriority(TaskPriority priority) |
设置优先级 |
void SetStatus(TaskStatus status) |
设置状态 |
引用计数
| 方法 | 描述 |
|---|---|
void AddRef() |
增加引用计数 |
void Release() |
减少引用计数(自动 delete 引用归零时) |
使用示例
class MyTask : public ITask {
public:
explicit MyTask(int data) : m_data(data) {}
void Execute() override {
// 执行任务逻辑
printf("Task executed with data: %d\n", m_data);
}
void OnComplete() override {
// 任务完成后的清理
}
private:
int m_data;
};
// 使用
auto task = new MyTask(42);
task->SetPriority(TaskPriority::High);
TaskSystem::Get().Submit(std::unique_ptr<ITask>(task));
相关文档
- LambdaTask - Lambda 任务封装
- TaskGroup - 任务组
- TaskSystem - 任务系统