1#ifndef VL_ASYNC_QUEUE_H
2#define VL_ASYNC_QUEUE_H
115static inline vl_uint32_t vlAsyncQueueSize(
const vl_async_queue* queue){
A Non-Blocking Atomic (/Asynchronous) Memory Pool.
Definition vl_async_pool.h:44
vl_async_pool elements
Definition vl_async_queue.h:30
void vlAsyncQueueClear(vl_async_queue *queue)
Clears the queue content and resets it to its initial dummy-node state.
Definition vl_async_queue.c:51
vl_atomic_ptr tail
Definition vl_async_queue.h:36
void vlAsyncQueuePushBack(vl_async_queue *queue, const void *value)
Pushes a new element to the end of the queue.
Definition vl_async_queue.c:63
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:29
vl_bool_t vlAsyncQueuePopFront(vl_async_queue *queue, void *result)
Pops an element from the front of the queue.
Definition vl_async_queue.c:90
vl_atomic_uint32_t size
Definition vl_async_queue.h:39
vl_atomic_ptr head
Definition vl_async_queue.h:33
void vlAsyncQueueDelete(vl_async_queue *queue)
Deletes a heap-allocated queue created with vlAsyncQueueNew.
Definition vl_async_queue.c:46
void vlAsyncQueueFree(vl_async_queue *queue)
Frees resources held by the queue but does not deallocate the queue structure.
Definition vl_async_queue.c:36
void vlAsyncQueueReset(vl_async_queue *queue)
Resets the queue, deallocating most dynamically allocated memory.
Definition vl_async_queue.c:57
vl_async_queue * vlAsyncQueueNew(vl_uint16_t elementSize)
Allocates and initializes a new async queue on the heap.
Definition vl_async_queue.c:40
vl_uint16_t elementSize
Definition vl_async_queue.h:42
Multi-Producer, Multi-Consumer (MPMC) Lock-Free Queue.
Definition vl_async_queue.h:28
#define vlAtomicLoad(ptr)
Performs a generic atomic read operation.
Definition vl_atomic.h:157
VL_ATOMIC vl_tagged_ptr vl_atomic_ptr
Atomic variant of vl_tagged_ptr.
Definition vl_atomic_ptr.h:28
VL_BOOL_T vl_bool_t
Definition vl_numtypes.h:128