- 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
2.7 KiB
2.7 KiB
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();
相关文档
- ITask - 任务基类
- LambdaTask - Lambda 任务
- TaskGroup - 任务组
- TaskSystemConfig - 配置
- ../threading/threading.md - 模块总览