File syn_spsc_queue.c¶
FileList > src > syntropic > util > syn_spsc_queue.c
Go to the source code of this file
Lock-free Single-Producer Single-Consumer (SPSC) queue implementation.
#include "syn_spsc_queue.h"#include "../common/syn_barrier.h"#include <string.h>
Public Functions¶
| Type | Name |
|---|---|
| size_t | syn_spsc_queue_count (const SYN_SPSC_Queue * q) Get current number of items stored in queue. |
| SYN_Status | syn_spsc_queue_init (SYN_SPSC_Queue * q, void * elem_buf, size_t elem_size, size_t capacity) Initialize a Lock-Free SPSC Queue. |
| bool | syn_spsc_queue_is_empty (const SYN_SPSC_Queue * q) Check if the queue is empty. |
| bool | syn_spsc_queue_is_full (const SYN_SPSC_Queue * q) Check if the queue is full. |
| SYN_Status | syn_spsc_queue_pop (SYN_SPSC_Queue * q, void * out_item) Pop an item from the queue (Consumer only). |
| SYN_Status | syn_spsc_queue_push (SYN_SPSC_Queue * q, const void * item) Push an item into the queue (Producer only). |
Public Static Functions¶
| Type | Name |
|---|---|
| size_t | spsc_advance (size_t idx, size_t capacity) |
Public Functions Documentation¶
function syn_spsc_queue_count¶
Get current number of items stored in queue.
Parameters:
qQueue context.
Returns:
Count of items in queue.
function syn_spsc_queue_init¶
Initialize a Lock-Free SPSC Queue.
SYN_Status syn_spsc_queue_init (
SYN_SPSC_Queue * q,
void * elem_buf,
size_t elem_size,
size_t capacity
)
Parameters:
qPointer to queue control structure.elem_bufPointer to caller-provided backing memory buffer.elem_sizeSize of each element in bytes (must be > 0).capacityNumber of elements buffer can hold (must be > 0).
Returns:
SYN_OK on success.
function syn_spsc_queue_is_empty¶
Check if the queue is empty.
Parameters:
qQueue context.
Returns:
true if empty.
function syn_spsc_queue_is_full¶
Check if the queue is full.
Parameters:
qQueue context.
Returns:
true if full.
function syn_spsc_queue_pop¶
Pop an item from the queue (Consumer only).
Parameters:
qQueue context.out_itemPointer to memory receiving popped item.
Returns:
SYN_OK on success, or SYN_ERROR if empty.
function syn_spsc_queue_push¶
Push an item into the queue (Producer only).
Parameters:
qQueue context.itemPointer to item to copy into queue.
Returns:
SYN_OK on success, or SYN_BUSY if full.
Public Static Functions Documentation¶
function spsc_advance¶
The documentation for this class was generated from the following file src/syntropic/util/syn_spsc_queue.c