- 重组文档目录结构: 每个模块的概述页移动到模块子目录 - 重命名 index.md 为 main.md - 修正所有模块文档中的错误: - math: FromEuler→FromEulerAngles, TransformDirection 包含缩放, Box 是 OBB, Color::ToRGBA 格式 - containers: 新增 operator==/!= 文档, 补充 std::hash DJB 算法细节 - core: 修复 types 链接错误 - debug: LogLevelToString 返回大写, timestamp 是秒, Profiler 空实现标注, Windows API vs ANSI - memory: 修复头文件路径, malloc vs operator new, 新增方法文档 - resources: 修复 Shader/Texture 链接错误 - threading: TaskSystem::Wait 空实现标注, ReadWriteLock 重入描述, LambdaTask 链接 - 验证: fix_links.py 确认 0 个断裂引用
2.6 KiB
2.6 KiB
TaskSystem
命名空间: XCEngine::Threading
类型: class (singleton)
头文件: XCEngine/Threading/TaskSystem.h
描述: 并行任务调度系统单例,提供工作窃取式任务队列和并行 for 循环。
概述
TaskSystem 是 XCEngine 的核心并行任务调度系统。它创建多个工作线程,使用优先级队列和工作窃取算法调度任务。它还提供 ParallelFor 方法用于数据级并行,以及主线程任务队列。
单例访问
| 方法 | 描述 |
|---|---|
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();
相关文档
- ITask - 任务基类
- LambdaTask - Lambda 任务
- TaskGroup - 任务组
- TaskSystemConfig - 配置
- ../threading/threading.md - 模块总览