Unity 6.3
0 онлайн 71 гостей 3 в системе
Вход

RadeonRaysContext.Wait

Declaration

public bool Wait(LightTransport.EventID id);

Параметры

Параметр Описание
Идентификатор ID события.

Возвращаемое значение

логическое Возвращает true для успешно завершенного события.

Описание

Дождитесь асинхронного события.

Это метод блокировки, который задерживает текущий поток CPU до завершения операции, представленной EventID. Добавление задержки может значительно повлиять на производительность во время обычного выполнения. Чтобы избежать задержек, вызовите IDeviceContext.Wait в конце вашей последовательности операций.

using Unity.Collections;
using UnityEngine;
using UnityEngine.LightTransport;

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(length, 1); 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(); Debug.Assert(flushOk); bool eventOk = ctx.Wait(writeEvent); Debug.Assert(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.