id | 要查询的事件 ID。 |
bool 如果异步操作已完成,则返回 True。
如果异步操作已完成,则返回 true。
此方法会立即返回,并且不会等待操作完成。使用 Flush 强制设备实现开始处理命令。使用 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); input.Dispose(); var watchDogTimeout = Time.realtimeSinceStartup + 5.0f; while (!ctx.IsCompleted(readEvent)) { Thread.Sleep(10); if (Time.realtimeSinceStartup > watchDogTimeout) Assert.IsTrue(false, "watchdog timeout"); }
// The event has completed. 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();
如何检查异步操作是否已完成。