38 lines
948 B
Markdown
38 lines
948 B
Markdown
|
|
# D3D12CommandQueue::Wait
|
||
|
|
|
||
|
|
```cpp
|
||
|
|
void Wait(RHIFence* fence, uint64_t value) override;
|
||
|
|
```
|
||
|
|
|
||
|
|
阻塞命令队列,直到指定栅栏的完成值达到指定值。该方法用于 GPU 内部的同步操作。
|
||
|
|
|
||
|
|
**参数:**
|
||
|
|
- `fence` - 目标栅栏指针,不能为 `nullptr`
|
||
|
|
- `value` - 等待的信号值
|
||
|
|
|
||
|
|
**返回:** 无
|
||
|
|
|
||
|
|
**复杂度:** O(1)
|
||
|
|
|
||
|
|
**使用场景:**
|
||
|
|
- 等待另一个命令队列的操作完成
|
||
|
|
- 实现 GPU 流水线各阶段之间的同步
|
||
|
|
- 多 GPU 节点间的同步
|
||
|
|
|
||
|
|
**注意:** 如果栅栏的当前值已经大于或等于指定值,则此方法立即返回。
|
||
|
|
|
||
|
|
## 示例
|
||
|
|
|
||
|
|
```cpp
|
||
|
|
D3D12Fence* fence; // 已发送信号的栅栏
|
||
|
|
// 等待 fence 的值达到 1
|
||
|
|
commandQueue.Wait(fence, 1);
|
||
|
|
```
|
||
|
|
|
||
|
|
## 相关文档
|
||
|
|
|
||
|
|
- [D3D12CommandQueue 总览](command-queue.md) - 返回类总览
|
||
|
|
- [Signal](signal.md) - 向栅栏发送信号
|
||
|
|
- [Wait(ID3D12Fence*)](wait-native.md) - Native D3D12Fence 版本
|
||
|
|
- [D3D12Fence](../fence/fence.md)
|