Files
XCEngine/docs/api/threading/threading.md
ssdfasd f427699ac6 refactor: improve test infrastructure and fix OpenGL GLAD initialization
- 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
2026-03-23 00:43:02 +08:00

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

相关文档