docs: update memory and threading API docs

This commit is contained in:
2026-03-20 02:35:24 +08:00
parent c5b17239ca
commit fd792b7df1
103 changed files with 2485 additions and 673 deletions

View File

@@ -1,37 +1,47 @@
# Thread::Yield
```cpp
static void Yield()
static void Yield();
```
让出当前线程的时间片,允许操作系统调度器将 CPU 时间分配给其他就绪线程
静态方法,向调度器提示当前线程愿意让出 CPU 时间片,让其他线程有机会执行。此方法适用于需要 busy-wait 或自旋等待的场景
实现基于 `std::this_thread::yield()`。调度器行为取决于操作系统。
**警告:** 过度使用 `Yield()` 可能导致性能问题。在多数情况下,使用 `Sleep()` 是更好的选择。
**参数:**
**返回:**
**复杂度** O(1)
**使用场景:**
- 在自旋等待某个条件时调用,避免浪费 CPU 周期。
- 在长时间循环中定期让出时间片,提高其他线程的响应性。
**线程安全**
**示例:**
```cpp
volatile bool ready = false;
#include "XCEngine/Threading/Thread.h"
#include <atomic>
#include <iostream>
Thread worker;
worker.Start([]() {
ready = true;
}, "WorkerThread");
using namespace XCEngine::Threading;
// 忙等待,但定期让出时间片
while (!ready) {
Thread::Yield();
int main() {
std::atomic<bool> ready{false};
Thread t;
t.Start([&ready]() {
while (!ready.load()) {
Thread::Yield();
}
std::cout << "Worker: ready flag is set!" << std::endl;
}, "YieldWorker");
Thread::Sleep(100);
ready.store(true);
t.Join();
return 0;
}
worker.Join();
```
## 相关文档