2026-03-19 01:07:49 +08:00
|
|
|
|
# RHIFence::Wait
|
|
|
|
|
|
|
|
|
|
|
|
```cpp
|
|
|
|
|
|
virtual void Wait(uint64_t value) = 0;
|
|
|
|
|
|
```
|
|
|
|
|
|
|
2026-03-20 02:35:45 +08:00
|
|
|
|
阻塞当前线程,直到围栏值达到或超过指定值。此方法用于 CPU 端等待 GPU 完成特定任务。
|
2026-03-19 01:07:49 +08:00
|
|
|
|
|
|
|
|
|
|
**参数:**
|
2026-03-20 02:35:45 +08:00
|
|
|
|
- `value` - 要等待的围栏值
|
2026-03-19 01:07:49 +08:00
|
|
|
|
|
2026-03-20 02:35:45 +08:00
|
|
|
|
**返回:** 无
|
|
|
|
|
|
|
|
|
|
|
|
**线程安全**:❌
|
|
|
|
|
|
|
|
|
|
|
|
**复杂度**:O(n),具体取决于 GPU 完成指定值所需时间
|
|
|
|
|
|
|
|
|
|
|
|
**示例**:
|
2026-03-19 01:07:49 +08:00
|
|
|
|
|
|
|
|
|
|
```cpp
|
2026-03-20 02:35:45 +08:00
|
|
|
|
RHIFence* fence = device->CreateFence();
|
|
|
|
|
|
|
|
|
|
|
|
fence->Signal(500ULL);
|
|
|
|
|
|
|
|
|
|
|
|
// 执行其他 CPU 工作...
|
|
|
|
|
|
|
|
|
|
|
|
// 等待 GPU 完成到指定值
|
|
|
|
|
|
fence->Wait(500ULL);
|
|
|
|
|
|
|
|
|
|
|
|
// 继续后续处理
|
2026-03-19 01:07:49 +08:00
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## 相关文档
|
|
|
|
|
|
|
2026-03-20 02:35:45 +08:00
|
|
|
|
- [RHIFence](fence.md) - 返回类总览
|