Files
XCEngine/docs/api/threading/task-system/task-system.md
ssdfasd 7332a2a592 Fix broken link in FileWriter documentation
- Removed broken [FileWriter](FileWriter.md) link from 方法列表 section since the constructor is already documented on the main page and FileWriter.md doesn't exist (file is named filewriter.md)

Also includes link fixes from fix_links.py:
- Fixed relative paths in containers documentation
2026-03-19 01:14:22 +08:00

2.7 KiB
Raw Blame History

TaskSystem

命名空间: XCEngine::Threading

类型: class (singleton)

头文件: XCEngine/Threading/TaskSystem.h

描述: 并行任务调度系统单例,提供优先级任务队列。

概述

TaskSystem 是 XCEngine 的核心并行任务调度系统。它创建多个工作线程,使用优先级队列调度任务。它还提供 ParallelFor 方法用于数据级并行,以及主线程任务队列。

注意: 当前实现的 stealTasks 配置项未生效,任务系统使用单一全局任务队列而非工作窃取模式。

单例访问

方法 描述
Get 获取单例实例

公共方法

生命周期

方法 描述
Get 获取单例实例
Initialize 初始化任务系统
Shutdown 关闭任务系统

任务提交

方法 描述
Submit(unique_ptr) 提交任务对象
Submit(callback) 提交 lambda 任务

任务组

方法 描述
CreateTaskGroup 创建任务组
DestroyTaskGroup 销毁任务组

等待

方法 描述
Wait 等待指定任务完成(当前为空实现)

信息

方法 描述
GetWorkerThreadCount 获取工作线程数量

并行 for

方法 描述
ParallelFor 并行执行 for 循环

主线程

方法 描述
RunOnMainThread 将任务提交到主线程执行
Update 在主线程中处理主线程队列

使用示例

// 初始化4 个工作线程)
TaskSystemConfig config;
config.workerThreadCount = 4;
TaskSystem::Get().Initialize(config);

// 提交任务
TaskSystem::Get().Submit([]() {
    printf("Task 1 running\n");
});

TaskSystem::Get().Submit([]() {
    printf("Task 2 running\n");
}, TaskPriority::High);

// 并行 for
TaskSystem::Get().ParallelFor(0, 1000, [](int32_t i) {
    process(i);
});

// 主线程任务
TaskSystem::Get().RunOnMainThread([]() {
    // 更新 UI 或其他主线程操作
});

// 主循环中调用 Update
while (running) {
    TaskSystem::Get().Update();  // 处理主线程任务
}

// 关闭
TaskSystem::Get().Shutdown();

相关文档