EventID
структура в UnityEngine.LightTransport
Описание
Уникальный идентификатор для отслеживания асинхронных операций, выполняемых в контексте устройства.
EventID используется для отслеживания состояния завершения асинхронных операций, таких как чтение и запись в буфер. Каждый EventID представляет уникальную операцию и обеспечивает механизм запроса состояния завершения или ожидания завершения операции.
Основные характеристики EventID:
- Одноразовое использование: Каждый EventID может использоваться только для одной операции.
- Не поддающийся повторному использованию: после передачи в операцию он не может быть повторно использован.
- Должны быть уничтожены: Используйте IDeviceContext.DestroyEvent для предотвращения утечки ресурсов.
- Безопасный поток: может быть запрошен из различных потоков.
EventIDs обычно используются с:
- IDeviceContext.ReadBuffer и IDeviceContext.WriteBuffer операции.
- IDeviceContext.Wait для блокировки до завершения.
- IDeviceContext.IsCompleted для неблокирующих проверок состояния.
// Create events to track multiple async operations var writeEvent = context.CreateEvent(); var readEvent = context.CreateEvent();
// Start async write operation context.WriteBuffer(bufferSlice, inputData, writeEvent);
// Start async read operation (depends on write completing) context.ReadBuffer(bufferSlice, outputData, readEvent);
// Submit all operations for execution context.Flush();
// Wait for write to complete before proceeding bool writeSuccess = context.Wait(writeEvent); Assert.IsTrue(writeSuccess);
// Check if read completed without blocking if (context.IsCompleted(readEvent)) { Debug.Log("Read operation completed"); } else { // Wait for read to complete bool readSuccess = context.Wait(readEvent); Assert.IsTrue(readSuccess); }
// Clean up events. context.DestroyEvent(writeEvent); context.DestroyEvent(readEvent);
Свойства
| Свойство | Описание |
|---|---|
| Value | Базовое значение идентификатора события. |
Конструкторы
| Конструктор | Описание |
|---|---|
| EventID | Создать новый объект EventID. |