POSIX Shared Memory Data Structures 1.0
High-performance lock-free data structures for inter-process communication
Loading...
Searching...
No Matches
shm_queue< T, TableType > Class Template Reference

Lock-free circular queue for shared memory IPC. More...

#include <shm_queue.h>

+ Inheritance diagram for shm_queue< T, TableType >:
+ Collaboration diagram for shm_queue< T, TableType >:

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
 
- Public Member Functions inherited from shm_span< T, ShmType >
 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

- Protected Attributes inherited from shm_span< T, ShmType >
ShmType & shm
 
size_t offset
 
size_t num_elem
 

Detailed Description

template<typename T, typename TableType = shm_table>
requires std::is_trivially_copyable_v<T>
class shm_queue< T, TableType >

Lock-free circular queue for shared memory IPC.

Uses C++20/23 features for modern, efficient implementation:

  • std::atomic for lock-free operations
  • std::optional for safe dequeue operations
  • Concepts for type constraints
Template Parameters
TThe type of elements stored in the queue. Must be trivially copyable.
TableTypeThe type of shm_table to use (default: shm_table)

Definition at line 24 of file shm_queue.h.

Constructor & Destructor Documentation

◆ shm_queue()

template<typename T , typename TableType = shm_table>
template<typename ShmType >
shm_queue< T, TableType >::shm_queue ( ShmType &  shm,
std::string_view  name,
size_t  capacity = 0 
)
inline

Member Function Documentation

◆ capacity()

template<typename T , typename TableType = shm_table>
size_t shm_queue< T, TableType >::capacity ( ) const
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().

◆ dequeue() [1/2]

template<typename T , typename TableType = shm_table>
std::optional< T > shm_queue< T, TableType >::dequeue ( )
inlinenoexcept

Dequeue an element (lock-free)

Returns
std::optional with value if successful, empty if queue is empty

Definition at line 133 of file shm_queue.h.

Referenced by shm_queue< T, TableType >::dequeue(), and main().

◆ dequeue() [2/2]

template<typename T , typename TableType = shm_table>
bool shm_queue< T, TableType >::dequeue ( T &  out_value)
inlinenoexcept

Try dequeue with output parameter (for compatibility)

Definition at line 151 of file shm_queue.h.

References shm_queue< T, TableType >::dequeue().

◆ empty()

template<typename T , typename TableType = shm_table>
bool shm_queue< T, TableType >::empty ( ) const
inlinenoexcept

Definition at line 159 of file shm_queue.h.

◆ enqueue()

template<typename T , typename TableType = shm_table>
bool shm_queue< T, TableType >::enqueue ( const T &  value)
inlinenoexcept

Enqueue an element (lock-free)

Returns
true if successful, false if queue is full

Definition at line 115 of file shm_queue.h.

Referenced by main().

◆ full()

template<typename T , typename TableType = shm_table>
bool shm_queue< T, TableType >::full ( ) const
inlinenoexcept

Definition at line 165 of file shm_queue.h.

◆ name()

template<typename T , typename TableType = shm_table>
std::string_view shm_queue< T, TableType >::name ( ) const
inlinenoexcept

Definition at line 191 of file shm_queue.h.

Referenced by example_large_simulation(), and shm_queue< T, TableType >::shm_queue().

◆ size()

template<typename T , typename TableType = shm_table>
size_t shm_queue< T, TableType >::size ( ) const
inlinenoexcept

Definition at line 172 of file shm_queue.h.

Referenced by main().


The documentation for this class was generated from the following file: