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

2.2 KiB
Raw Blame History

TaskGroup::AddDependency

void AddDependency(uint64_t taskId, uint64_t dependsOn);

为任务添加依赖关系。指定的任务 taskId 将在 dependsOn 任务完成后才会开始执行。

参数:

  • taskId - 从属任务的 ID
  • dependsOn - 被依赖任务的 IDtaskId 将在此任务完成后才执行

返回:

线程安全: 线程安全

示例:

#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;
}

相关文档

详细描述

AddDependency 方法用于设置任务间的依赖关系。taskId 指定的任务将等待 dependsOn 指定的任务完成后才能开始执行。

依赖关系必须在任务执行前设置,建议在所有任务添加完成后统一设置依赖。

参数

参数 类型 描述
taskId uint64_t 依赖其他任务的任务ID
dependsOn uint64_t 被依赖的任务ID

返回值

示例

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);