Files
XCEngine/docs/api/threading/task-group/task-group.md

89 lines
2.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# TaskGroup
**命名空间**: `XCEngine::Threading`
**类型**: `class`
**头文件**: `XCEngine/Threading/TaskGroup.h`
**描述**: 管理一组相关任务的执行和同步
## 概述
TaskGroup 用于将多个相关任务组织在一起,统一管理它们的执行和同步。任务组内的任务可以声明依赖关系,确保任务按照正确的顺序执行。支持任务优先级设置、完成回调、进度查询和取消操作。
主要功能:
- 添加任务ITask 对象或函数回调)
- 声明任务间依赖关系
- 等待所有任务完成
- 设置完成回调
- 查询完成进度
- 取消未执行的任务
## 公共方法
| 方法 | 描述 |
|------|------|
| [`Task()`](task-group.md) | 默认构造函数 |
| [`~Task()`](task-group.md) | 析构函数 |
| [`AddTask`](add-task.md) | 添加任务到组(支持 ITask 或 Callback |
| [`AddDependency`](add-dependency.md) | 添加任务依赖关系 |
| [`Wait`](wait.md) | 阻塞等待所有任务完成 |
| [`WaitFor`](wait-for.md) | 等待指定超时时间 |
| [`SetCompleteCallback`](set-complete-callback.md) | 设置完成回调函数 |
| [`IsComplete`](is-complete.md) | 检查所有任务是否完成 |
| [`GetProgress`](get-progress.md) | 获取任务组完成进度 |
| [`Cancel`](cancel.md) | 取消所有未执行的任务 |
## 使用示例
```cpp
#include "XCEngine/Threading/TaskGroup.h"
#include "XCEngine/Threading/Task.h"
#include <iostream>
using namespace XCEngine::Threading;
class MyTask : public ITask {
public:
explicit MyTask(const std::string& name) : m_name(name) {}
void Execute() override {
std::cout << "Task " << m_name << " executing\n";
}
void OnComplete() override {
std::cout << "Task " << m_name << " completed\n";
}
private:
std::string m_name;
};
int main() {
TaskGroup group;
uint64_t task1 = group.AddTask(std::make_unique<MyTask>("Task1"));
uint64_t task2 = group.AddTask([]() {
std::cout << "Lambda task executing\n";
}, TaskPriority::High);
group.AddDependency(task2, task1);
group.SetCompleteCallback([]() {
std::cout << "All tasks completed!\n";
});
group.Wait();
std::cout << "Progress: " << group.GetProgress() * 100 << "%\n";
return 0;
}
```
## 相关文档
- [ITask](../task/task.md) - 任务接口基类
- [TaskSystem](../task-system/task-system.md) - 任务调度系统