docs: rebuild Threading API content
This commit is contained in:
@@ -1,32 +1,44 @@
|
||||
# TaskGroup::AddDependency
|
||||
|
||||
添加元素或建立关联。
|
||||
记录一个任务对另一个任务的依赖关系。
|
||||
|
||||
```cpp
|
||||
void AddDependency(uint64_t taskId, uint64_t dependsOn);
|
||||
```
|
||||
|
||||
该方法声明于 `XCEngine/Threading/TaskGroup.h`,当前页面用于固定 `TaskGroup` 类目录下的方法级 canonical 路径。
|
||||
## 行为说明
|
||||
|
||||
**参数:**
|
||||
- `taskId` - 参数语义详见头文件声明。
|
||||
- `dependsOn` - 参数语义详见头文件声明。
|
||||
当前实现会在持锁状态下检查两个 ID 是否都位于 `m_tasks` 范围内;如果合法,就把 `dependsOn` 追加到 `m_tasks[taskId].dependencies`。
|
||||
|
||||
**返回:** `void` - 无返回值。
|
||||
如果任一 ID 越界,函数会直接忽略这次调用。
|
||||
|
||||
**示例:**
|
||||
## 参数
|
||||
|
||||
```cpp
|
||||
#include <XCEngine/Threading/TaskGroup.h>
|
||||
- `taskId` - 依赖别人的任务。
|
||||
- `dependsOn` - 被依赖的任务。
|
||||
|
||||
void Example() {
|
||||
XCEngine::Threading::TaskGroup object;
|
||||
// 根据上下文补齐参数后调用 TaskGroup::AddDependency(...)。
|
||||
(void)object;
|
||||
}
|
||||
```
|
||||
## 返回值
|
||||
|
||||
- 无。
|
||||
|
||||
## 当前实现限制
|
||||
|
||||
- 当前只保存依赖 ID,不会递增 `pendingDepCount`。
|
||||
- 当前没有环检测。
|
||||
- 当前没有“依赖完成后解锁任务”的运行时逻辑。
|
||||
- 由于 [TaskGroup](TaskGroup.md) 本身没有接入真正调度,这些依赖关系目前只是被记录下来,不会改变任务执行顺序。
|
||||
|
||||
## 设计说明
|
||||
|
||||
商业级任务系统里的依赖通常会驱动两个行为:
|
||||
|
||||
- 决定任务什么时候从 waiting 变成 ready。
|
||||
- 决定整组任务什么时候可以触发 completion fence。
|
||||
|
||||
当前 `AddDependency()` 只覆盖了“数据结构里留一份关系记录”这一步。
|
||||
|
||||
## 相关文档
|
||||
|
||||
- [返回类总览](TaskGroup.md)
|
||||
- [返回模块目录](../Threading.md)
|
||||
- [返回类型总览](TaskGroup.md)
|
||||
- [AddTask](AddTask.md)
|
||||
- [Wait](Wait.md)
|
||||
|
||||
Reference in New Issue
Block a user