Files
XCEngine/docs/api/XCEngine/Threading/TaskGroup/Wait.md

33 lines
912 B
Markdown
Raw Normal View History

2026-03-26 16:45:24 +08:00
# TaskGroup::Wait
2026-03-26 20:59:59 +08:00
阻塞当前线程,等待任务组完成。
2026-03-26 16:45:24 +08:00
```cpp
void Wait();
```
2026-03-26 20:59:59 +08:00
## 行为说明
2026-03-26 16:45:24 +08:00
2026-03-26 20:59:59 +08:00
当前实现会等待条件变量,直到谓词 `m_pendingCount.load() == 0` 为真。
2026-03-26 16:45:24 +08:00
2026-03-26 20:59:59 +08:00
## 返回值
2026-03-26 16:45:24 +08:00
2026-03-26 20:59:59 +08:00
- 无。
2026-03-26 16:45:24 +08:00
2026-03-26 20:59:59 +08:00
## 当前实现限制
2026-03-26 16:45:24 +08:00
2026-03-26 20:59:59 +08:00
- 当前源码里 `m_pendingCount` 会在 [AddTask](AddTask.md) 时递增,但没有任何代码路径会把它递减。
- 这意味着只要任务组里添加过任务,`Wait()` 当前就不会因为正常任务完成而返回。
- [Cancel](Cancel.md) 也不会通知条件变量,因此取消并不能唤醒这里的等待。
## 使用建议
- 当前不要在生产代码中依赖这个接口实现真正的任务组同步。
- 如果你需要可靠同步,优先直接使用 [Thread::Join](../Thread/Join.md) 或更低层的锁/条件变量方案。
2026-03-26 16:45:24 +08:00
## 相关文档
2026-03-26 20:59:59 +08:00
- [返回类型总览](TaskGroup.md)
- [WaitFor](WaitFor.md)
- [IsComplete](IsComplete.md)