版本:Unity 6 (6000.0)
语言English
  • C#

RadeonRaysContext.Wait

建议修改

成功!

感谢您帮助我们提高 Unity 文档的质量。虽然我们无法接受所有提交,但我们确实阅读了用户提出的每个建议的更改,并在适用时进行更新。

关闭

提交失败

由于某些原因,您的建议更改无法提交。请<a>稍后再试</a>。感谢您抽出时间帮助我们提高 Unity 文档的质量。

关闭

取消

声明

public bool Wait(LightTransport.EventID id);

参数

id 事件的 ID。

返回值

bool 如果事件成功完成,则返回 true。

描述

等待异步事件。

这是一个阻塞方法,它会阻塞当前 CPU 线程,直到 EventID 表示的操作完成。在常规执行期间添加阻塞可能会对性能产生重大影响。为了避免阻塞,请在操作序列的末尾调用 IDeviceContext.Wait

          IDeviceContext ctx = new RadeonRaysContext();
ctx.Initialize();
uint length = 8;
var input = new NativeArray<byte>((int)length, Allocator.Persistent);
for (int i = 0; i < length; ++i)
    input[i] = (byte)i;
var output = new NativeArray<byte>((int)length, Allocator.Persistent);
BufferID id = ctx.CreateBuffer(8);
var writeEvent = ctx.CreateEvent();
ctx.WriteBuffer(id.Slice<byte>(), input, writeEvent);
var readEvent = ctx.CreateEvent();
ctx.ReadBuffer(id.Slice<byte>(), output, readEvent);
bool flushOk = ctx.Flush();
Assert.IsTrue(flushOk);
bool eventOk = ctx.Wait(writeEvent);
Assert.IsTrue(eventOk);

// The event has completed.

input.Dispose(); Assert.IsTrue(ctx.IsCompleted(readEvent)); ctx.DestroyEvent(readEvent); ctx.DestroyEvent(writeEvent); ctx.DestroyBuffer(id); for (int i = 0; i < length; ++i) Assert.AreEqual((byte)i, output[i]); output.Dispose(); ctx.Dispose();

如何使用 Wait。