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

91 lines
2.2 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::AddDependency
```cpp
void AddDependency(uint64_t taskId, uint64_t dependsOn);
```
为任务添加依赖关系。指定的任务 `taskId` 将在 `dependsOn` 任务完成后才会开始执行。
**参数:**
- `taskId` - 从属任务的 ID
- `dependsOn` - 被依赖任务的 IDtaskId 将在此任务完成后才执行
**返回:**
**线程安全:** ✅ 线程安全
**示例:**
```cpp
#include "XCEngine/Threading/TaskGroup.h"
#include "XCEngine/Threading/Task.h"
#include <iostream>
#include <memory>
using namespace XCEngine::Threading;
int main() {
TaskGroup group;
uint64_t loadData = group.AddTask(
[]() { std::cout << "Loading data...\n"; },
TaskPriority::High
);
uint64_t processData = group.AddTask(
[]() { std::cout << "Processing data...\n"; },
TaskPriority::Normal
);
uint64_t saveData = group.AddTask(
[]() { std::cout << "Saving data...\n"; },
TaskPriority::Low
);
group.AddDependency(processData, loadData);
group.AddDependency(saveData, processData);
std::cout << "Execution order: loadData -> processData -> saveData\n";
group.Wait();
return 0;
}
```
## 相关文档
- [TaskGroup 总览](task-group.md) - 返回类总览
## 详细描述
`AddDependency` 方法用于设置任务间的依赖关系。`taskId` 指定的任务将等待 `dependsOn` 指定的任务完成后才能开始执行。
依赖关系必须在任务执行前设置,建议在所有任务添加完成后统一设置依赖。
## 参数
| 参数 | 类型 | 描述 |
|------|------|------|
| `taskId` | `uint64_t` | 依赖其他任务的任务ID |
| `dependsOn` | `uint64_t` | 被依赖的任务ID |
## 返回值
## 示例
```cpp
TaskGroup* group = TaskSystem::Get().CreateTaskGroup();
uint64_t loadData = group->AddTask([]() { /* 加载数据 */ });
uint64_t processData = group->AddTask([]() { /* 处理数据 */ });
uint64_t saveData = group->AddTask([]() { /* 保存数据 */ });
// processData必须在loadData完成后才能执行
group->AddDependency(processData, loadData);
// saveData必须在processData完成后才能执行
group->AddDependency(saveData, processData);
```