arduino-audio-tools
Loading...
Searching...
No Matches
Classes | Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
QueueLockFree< T > Class Template Reference

Lock-free MPMC queue. More...

#include <QueueLockFree.h>

Classes

struct  Node
 

Public Member Functions

 QueueLockFree (size_t capacity, Allocator &allocator=DefaultAllocator)
 
 ~QueueLockFree ()
 
size_t availableForWrite () const
 
size_t capacity () const
 
void clear ()
 
bool dequeue (T &result)
 
bool empty () const
 
bool enqueue (const T &data)
 
bool enqueue (T &&data)
 
bool resize (size_t capacity)
 
void setAllocator (Allocator &allocator)
 
size_t size () const
 

Protected Member Functions

template<typename U >
bool emplace (U &&val)
 

Protected Attributes

size_t capacity_mask = 0
 
size_t capacity_value = 0
 
std::atomic< size_thead_pos {0}
 
Nodep_node = nullptr
 
std::atomic< size_ttail_pos {0}
 
Vector< Nodevector
 

Detailed Description

template<typename T>
class audio_tools::QueueLockFree< T >

Lock-free MPMC queue.

T must be move-constructible; default-constructibility is NOT required (element storage is raw bytes — no T object is created until enqueue).

Constructor & Destructor Documentation

◆ QueueLockFree()

template<typename T >
QueueLockFree ( size_t  capacity,
Allocator allocator = DefaultAllocator 
)
inline

◆ ~QueueLockFree()

template<typename T >
~QueueLockFree ( )
inline

Member Function Documentation

◆ availableForWrite()

template<typename T >
size_t availableForWrite ( ) const
inline

◆ capacity()

template<typename T >
size_t capacity ( ) const
inline

◆ clear()

template<typename T >
void clear ( )
inline

◆ dequeue()

template<typename T >
bool dequeue ( T result)
inline

◆ emplace()

template<typename T >
template<typename U >
bool emplace ( U &&  val)
inlineprotected

◆ empty()

template<typename T >
bool empty ( ) const
inline

◆ enqueue() [1/2]

template<typename T >
bool enqueue ( const T data)
inline

◆ enqueue() [2/2]

template<typename T >
bool enqueue ( T &&  data)
inline

◆ resize()

template<typename T >
bool resize ( size_t  capacity)
inline

◆ setAllocator()

template<typename T >
void setAllocator ( Allocator allocator)
inline

◆ size()

template<typename T >
size_t size ( ) const
inline

Member Data Documentation

◆ capacity_mask

template<typename T >
size_t capacity_mask = 0
protected

◆ capacity_value

template<typename T >
size_t capacity_value = 0
protected

◆ head_pos

template<typename T >
std::atomic<size_t> head_pos {0}
protected

◆ p_node

template<typename T >
Node* p_node = nullptr
protected

◆ tail_pos

template<typename T >
std::atomic<size_t> tail_pos {0}
protected

◆ vector

template<typename T >
Vector<Node> vector
protected

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