Files
XCEngine/docs/api/XCEngine/Threading/Thread/Thread.md

1.9 KiB
Raw Blame History

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 让出当前线程时间片。

相关文档