POSIX Shared Memory Data Structures 1.0
High-performance lock-free data structures for inter-process communication
|
Lock-free circular queue for shared memory IPC. More...
#include <shm_queue.h>
Public Member Functions | |
template<typename ShmType > | |
shm_queue (ShmType &shm, std::string_view name, size_t capacity=0) | |
Create or open a shared memory queue. | |
bool | enqueue (const T &value) noexcept |
Enqueue an element (lock-free) | |
std::optional< T > | dequeue () noexcept |
Dequeue an element (lock-free) | |
bool | dequeue (T &out_value) noexcept |
Try dequeue with output parameter (for compatibility) | |
bool | empty () const noexcept |
bool | full () const noexcept |
size_t | size () const noexcept |
size_t | capacity () const noexcept |
std::string_view | name () const noexcept |
![]() | |
shm_span (ShmType &shm, size_t off, size_t count) | |
T * | data () |
const T * | data () const |
size_t | size () const |
T & | operator[] (size_t index) |
const T & | operator[] (size_t index) const |
Additional Inherited Members | |
![]() | |
ShmType & | shm |
size_t | offset |
size_t | num_elem |
Lock-free circular queue for shared memory IPC.
Uses C++20/23 features for modern, efficient implementation:
T | The type of elements stored in the queue. Must be trivially copyable. |
TableType | The type of shm_table to use (default: shm_table) |
Definition at line 24 of file shm_queue.h.
|
inline |
Create or open a shared memory queue.
Definition at line 57 of file shm_queue.h.
References shm_queue< T, TableType >::capacity(), shm_queue< T, TableType >::name(), shm_span< T, ShmType >::num_elem, shm_span< T, ShmType >::offset, and shm_span< T, ShmType >::shm.
|
inlinenoexcept |
Definition at line 184 of file shm_queue.h.
References shm_span< T, ShmType >::num_elem.
Referenced by shm_queue< T, TableType >::shm_queue().
|
inlinenoexcept |
Dequeue an element (lock-free)
Definition at line 133 of file shm_queue.h.
Referenced by shm_queue< T, TableType >::dequeue(), and main().
|
inlinenoexcept |
Try dequeue with output parameter (for compatibility)
Definition at line 151 of file shm_queue.h.
References shm_queue< T, TableType >::dequeue().
|
inlinenoexcept |
Definition at line 159 of file shm_queue.h.
|
inlinenoexcept |
Enqueue an element (lock-free)
Definition at line 115 of file shm_queue.h.
Referenced by main().
|
inlinenoexcept |
Definition at line 165 of file shm_queue.h.
|
inlinenoexcept |
Definition at line 191 of file shm_queue.h.
Referenced by example_large_simulation(), and shm_queue< T, TableType >::shm_queue().
|
inlinenoexcept |
Definition at line 172 of file shm_queue.h.
Referenced by main().