Struct UnsafeRingQueue<T>
A fixed-size circular buffer.
Implements
Namespace: Unity.Collections.LowLevel.Unsafe
Assembly: Unity.Collections.dll
Syntax
public struct UnsafeRingQueue<T> : INativeDisposable where T : unmanaged
Type Parameters
Name | Description |
---|---|
T | The type of the elements. |
Constructors
UnsafeRingQueue(int, AllocatorHandle, NativeArrayOptions)
Initializes and returns an instance of UnsafeRingQueue.
Declaration
public UnsafeRingQueue(int capacity, AllocatorManager.AllocatorHandle allocator, NativeArrayOptions options = NativeArrayOptions.ClearMemory)
Parameters
Type | Name | Description |
---|---|---|
int | capacity | The capacity. |
AllocatorManager.AllocatorHandle | allocator | The allocator to use. |
NativeArrayOptions | options | Whether newly allocated bytes should be zeroed out. |
UnsafeRingQueue(T*, int)
Initializes and returns an instance of UnsafeRingQueue which aliasing an existing buffer.
Declaration
public UnsafeRingQueue(T* ptr, int capacity)
Parameters
Type | Name | Description |
---|---|---|
T* | ptr | An existing buffer to set as the internal buffer. |
int | capacity | The capacity. |
Fields
Allocator
The allocator used to create the internal buffer.
Declaration
public AllocatorManager.AllocatorHandle Allocator
Field Value
Type | Description |
---|---|
AllocatorManager.AllocatorHandle | The allocator used to create the internal buffer. |
Ptr
The internal buffer where the content is stored.
Declaration
[NativeDisableUnsafePtrRestriction]
public T* Ptr
Field Value
Type | Description |
---|---|
T* | The internal buffer where the content is stored. |
Properties
Capacity
The number of elements that fit in the internal buffer.
Declaration
public int Capacity { get; }
Property Value
Type | Description |
---|---|
int | The number of elements that fit in the internal buffer. |
IsCreated
Whether this queue has been allocated (and not yet deallocated).
Declaration
public bool IsCreated { get; }
Property Value
Type | Description |
---|---|
bool | True if this queue has been allocated (and not yet deallocated). |
IsEmpty
Whether the queue is empty.
Declaration
public bool IsEmpty { get; }
Property Value
Type | Description |
---|---|
bool | True if the queue is empty. |
Length
The number of elements currently in this queue.
Declaration
public int Length { get; }
Property Value
Type | Description |
---|---|
int | The number of elements currently in this queue. |
Methods
Dequeue()
Removes the element from the end of the queue.
Declaration
public T Dequeue()
Returns
Type | Description |
---|---|
T | Returns the removed element. |
Exceptions
Type | Condition |
---|---|
InvalidOperationException | Thrown if the queue was empty. |
Dispose()
Releases all resources (memory and safety handles).
Declaration
public void Dispose()
Dispose(JobHandle)
Creates and schedules a job that will dispose this queue.
Declaration
public JobHandle Dispose(JobHandle inputDeps)
Parameters
Type | Name | Description |
---|---|---|
JobHandle | inputDeps | The handle of a job which the new job will depend upon. |
Returns
Type | Description |
---|---|
JobHandle | The handle of a new job that will dispose this queue. The new job depends upon inputDeps. |
Enqueue(T)
Adds an element at the front of the queue.
Declaration
public void Enqueue(T value)
Parameters
Type | Name | Description |
---|---|---|
T | value | The value to be added. |
Exceptions
Type | Condition |
---|---|
InvalidOperationException | Thrown if the queue was full. |
TryDequeue(out T)
Removes the element from the end of the queue.
Declaration
public bool TryDequeue(out T item)
Parameters
Type | Name | Description |
---|---|---|
T | item | Outputs the element removed. |
Returns
Type | Description |
---|---|
bool | True if an element was removed. |
Remarks
Does nothing if the queue is empty.
TryEnqueue(T)
Adds an element at the front of the queue.
Declaration
public bool TryEnqueue(T value)
Parameters
Type | Name | Description |
---|---|---|
T | value | The value to be added. |
Returns
Type | Description |
---|---|
bool | True if the value was added. |
Remarks
Does nothing if the queue is full.