51 lines
1.0 KiB
Markdown
51 lines
1.0 KiB
Markdown
# Thread::Yield
|
|
|
|
```cpp
|
|
static void Yield();
|
|
```
|
|
|
|
静态方法,向调度器提示当前线程愿意让出 CPU 时间片,让其他线程有机会执行。此方法适用于需要 busy-wait 或自旋等待的场景。
|
|
|
|
实现基于 `std::this_thread::yield()`。调度器行为取决于操作系统。
|
|
|
|
**警告:** 过度使用 `Yield()` 可能导致性能问题。在多数情况下,使用 `Sleep()` 是更好的选择。
|
|
|
|
**参数:** 无
|
|
|
|
**返回:** 无
|
|
|
|
**线程安全:** ✅
|
|
|
|
**示例:**
|
|
|
|
```cpp
|
|
#include "XCEngine/Threading/Thread.h"
|
|
#include <atomic>
|
|
#include <iostream>
|
|
|
|
using namespace XCEngine::Threading;
|
|
|
|
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;
|
|
}
|
|
```
|
|
|
|
## 相关文档
|
|
|
|
- [Thread 总览](thread.md) - 返回类总览
|
|
- [Sleep](sleep.md) - 线程休眠
|