1.9 KiB
1.9 KiB
Thread
命名空间: XCEngine::Threading
类型: class
头文件: XCEngine/Threading/Thread.h
描述: 对 std::thread 的轻量包装,附带名称字符串和一个缓存的线程标识值。
概述
Thread 不是线程系统,而是一个非常薄的 std::thread 外壳。它主要额外做了两件事:
- 保存一个
Containers::String m_name - 在
Start()时缓存一个m_id
这类包装在引擎里很常见,因为很多系统希望在不直接暴露标准库类型的前提下,统一线程 API、线程名和工具层调试信息。
当前实现边界
- Destructor 会在对象析构时自动
Join(),因此析构可能阻塞。 - Start 只保存名称字符串,不会设置 OS 层面的线程名。
- GetId 的来源是
native_handle()转成整数,而 GetCurrentId 的来源是std::thread::id的 hash;两者不是同一口径。 - Start 当前没有防御“对一个仍然 joinable 的线程再次 Start”的情况;这会落到
std::thread的终止语义。 - 当前没有对应单测覆盖。
公开方法
| 方法 | 说明 |
|---|---|
| Constructor | 构造空线程对象。 |
| Destructor | 析构时自动 join。 |
| Start | 启动线程。 |
| Join | 等待线程结束。 |
| Detach | 分离线程。 |
| GetId | 获取缓存的线程标识。 |
| GetName | 获取保存的线程名称。 |
| GetCurrentId | 获取当前线程标识。 |
| Sleep | 让当前线程休眠。 |
| Yield | 让出当前线程时间片。 |