14#ifndef VL_ASYNC_QUEUE_H
15#define VL_ASYNC_QUEUE_H
45 vl_async_pool elements;
54 vl_atomic_uint32_t size;
57 vl_uint16_t elementSize;
203static inline vl_uint32_t vlAsyncQueueSize(
const vl_async_queue* queue) {
return vlAtomicLoad(&queue->size); }
VL_API void vlAsyncQueuePushBack(vl_async_queue *queue, const void *value)
Pushes a new element to the end of the queue.
Definition vl_async_queue.c:69
VL_API void vlAsyncQueueDelete(vl_async_queue *queue)
Deletes a heap-allocated queue created with vlAsyncQueueNew.
Definition vl_async_queue.c:49
VL_API void vlAsyncQueueClear(vl_async_queue *queue)
Clears the queue content and resets it to its initial dummy-node state.
Definition vl_async_queue.c:55
VL_API void vlAsyncQueueFree(vl_async_queue *queue)
Frees resources held by the queue but does not deallocate the queue structure.
Definition vl_async_queue.c:40
VL_API vl_async_queue * vlAsyncQueueNew(vl_uint16_t elementSize)
Allocates and initializes a new async queue on the heap.
Definition vl_async_queue.c:42
VL_API vl_bool_t vlAsyncQueuePopFront(vl_async_queue *queue, void *result)
Pops an element from the front of the queue.
Definition vl_async_queue.c:102
VL_API void vlAsyncQueueReset(vl_async_queue *queue)
Resets the queue, deallocating most dynamically allocated memory.
Definition vl_async_queue.c:62
VL_API void vlAsyncQueueInit(vl_async_queue *queue, vl_uint16_t elementSize)
Initializes an async queue for elements of a specified size.
Definition vl_async_queue.c:32
#define vlAtomicLoad(ptr)
Performs a generic atomic read operation.
Definition vl_atomic.h:181
VL_ATOMIC vl_tagged_ptr vl_atomic_ptr
Atomic variant of vl_tagged_ptr.
Definition vl_atomic_ptr.h:60
VL_BOOL_T vl_bool_t
Definition vl_numtypes.h:191