- Rename D3D12Enum.h to D3D12Enums.h for naming consistency - Fix OpenGL unit test GLAD initialization by using gladLoadGL() instead of gladLoadGLLoader(wglGetProcAddress) for fallback support - Migrate remaining tests to use gtest_discover_tests for granular test discovery (math, core, containers, memory, threading, debug, components, scene, resources, input, opengl) - Remove obsolete TEST_RESOURCES_DIR and copy_directory commands from OpenGL unit test CMakeLists (minimal/Res doesn't exist) - Update TEST_SPEC.md with performance metrics and per-module build/test commands for faster development workflow - Update CMake path references to use lowercase paths
2.1 KiB
2.1 KiB
Threading 模块概览
命名空间: XCEngine::Threading
类型: module
头文件: XCEngine/Threading/Threading.h
描述: XCEngine 的线程和并发模块,提供多线程编程所需的同步原语和任务系统。
概述
Threading 模块提供了一套完整的多线程编程工具,包括线程封装、同步原语和并行任务系统。
模块内容
同步原语
| 组件 | 文件 | 描述 |
|---|---|---|
| Mutex | Mutex.h |
互斥锁 |
| SpinLock | SpinLock.h |
自旋锁 |
| ReadWriteLock | ReadWriteLock.h |
读写锁 |
线程
| 组件 | 文件 | 描述 |
|---|---|---|
| Thread | Thread.h |
线程封装类 |
任务系统
| 组件 | 文件 | 描述 |
|---|---|---|
| ITask | Task.h |
任务基类 |
| LambdaTask | LambdaTask.h |
Lambda 任务封装模板 |
| TaskGroup | TaskGroup.h |
任务组 |
| TaskSystem | TaskSystem.h |
并行任务调度系统 |
| TaskSystemConfig | TaskSystemConfig.h |
任务系统配置 |
同步原语对比
| 原语 | 适用场景 | 特点 |
|---|---|---|
Mutex |
一般互斥 | 可重入性差,开销适中 |
SpinLock |
短临界区 | 无系统调用,开销低 |
ReadWriteLock |
读多写少 | 读写分离,提高并发 |
任务系统使用示例
#include "Threading/TaskSystem.h"
// 初始化任务系统
TaskSystemConfig config;
config.workerThreadCount = 4;
TaskSystem::Get().Initialize(config);
// 提交并行任务
TaskSystem::Get().Submit([]() {
// 执行工作
});
// 使用任务组
TaskGroup* group = TaskSystem::Get().CreateTaskGroup();
group->AddTask([]() { /* 任务1 */ });
group->AddTask([]() { /* 任务2 */ });
group->Wait();
// 销毁任务组
TaskSystem::Get().DestroyTaskGroup(group);
相关文档
- Memory 模块 - 内存分配器