Files
XCEngine/docs/api/threading/task-group/task-group.md
ssdfasd 6a952473ce docs: fix threading module documentation discrepancies
- Fix include paths: use #include "Threading/..." instead of <XCEngine/Threading/...>
- Document protected ITask constructors (ITask(), ITask(TaskPriority))
- Document Callback typedef in TaskGroup
- Clarify Mutex STL-compatible methods are const
- Note GetProgress() implementation limitation (returns 0.0f)
2026-03-19 00:49:08 +08:00

89 lines
2.1 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` 提供了一种批量管理任务的机制。它允许添加多个任务、设置任务依赖关系、等待所有任务完成,并提供进度回调功能。
## 公共类型
| 类型 | 描述 |
|------|------|
| `Callback = std::function<void()>` | 任务组回调函数类型 |
## 公共方法
### 构造/析构
| 方法 | 描述 |
|------|------|
| `TaskGroup()` | 默认构造函数 |
| `~TaskGroup()` | 析构函数 |
### 任务添加
| 方法 | 描述 |
|------|------|
| [`AddTask(unique_ptr)`](addtask.md) | 添加任务对象 |
| [`AddTask(callback)`](addtask.md) | 添加 lambda 任务 |
### 依赖管理
| 方法 | 描述 |
|------|------|
| [`AddDependency`](adddependency.md) | 添加任务依赖关系 |
### 等待
| 方法 | 描述 |
|------|------|
| [`Wait`](wait.md) | 阻塞等待所有任务完成 |
| [`WaitFor`](waitfor.md) | 超时等待 |
### 回调和状态
| 方法 | 描述 |
|------|------|
| [`SetCompleteCallback`](setcompletecallback.md) | 设置完成回调 |
| [`IsComplete`](iscomplete.md) | 检查所有任务是否完成 |
| [`GetProgress`](getprogress.md) | 获取完成进度0.0f ~ 1.0f |
| [`Cancel`](cancel.md) | 取消所有任务 |
## 使用示例
```cpp
TaskGroup* group = TaskSystem::Get().CreateTaskGroup();
// 添加多个任务
uint64_t task1 = group->AddTask([]() { /* 任务1 */ });
uint64_t task2 = group->AddTask([]() { /* 任务2 */ });
// 设置依赖task3 等待 task1 完成
uint64_t task3 = group->AddTask([]() { /* 任务3 */ });
group->AddDependency(task3, task1);
// 设置完成回调
group->SetCompleteCallback([]() {
printf("All tasks completed!\n");
});
// 等待完成
group->Wait();
// 销毁
TaskSystem::Get().DestroyTaskGroup(group);
```
## 相关文档
- [ITask](../task/task.md) - 任务基类
- [TaskSystem](../task-system/task-system.md) - 任务系统
- [../threading/threading.md](../threading.md) - 模块总览