ctrl-utils
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
ctrl_utils::AtomicBuffer< T > Class Template Reference

#include <atomic_queue.h>

Public Member Functions

 AtomicBuffer (size_t size)
 
Pop ()
 
void Pop (T &value)
 
void Push (const T &item)
 
void Push (T &&item)
 
template<class... Args>
void Emplace (Args &&... args)
 
void Terminate ()
 

Protected Member Functions

void IncrementLoop (size_t &idx)
 
void IncrementWrite ()
 

Protected Attributes

std::vector< T > queue_
 
std::mutex m_
 
std::condition_variable cv_
 
std::sig_atomic_t terminate_ = false
 
size_t num_unread_ = 0
 
size_t idx_write_ = 0
 
size_t idx_read_ = 0
 

Detailed Description

template<typename T>
class ctrl_utils::AtomicBuffer< T >

Fixed size atomic queue.

Member Function Documentation

◆ Emplace()

template<typename T >
template<class... Args>
void ctrl_utils::AtomicBuffer< T >::Emplace ( Args &&...  args)
inline

Emplaces an item into the queue.

◆ Pop() [1/2]

template<typename T >
T ctrl_utils::AtomicBuffer< T >::Pop ( )
inline

Waits until the queue is ready and then pops an item.

◆ Pop() [2/2]

template<typename T >
void ctrl_utils::AtomicBuffer< T >::Pop ( T &  value)
inline

Waits until the queue is ready and then pops an element.

◆ Push() [1/2]

template<typename T >
void ctrl_utils::AtomicBuffer< T >::Push ( const T &  item)
inline

Pushes an item to the queue.

◆ Push() [2/2]

template<typename T >
void ctrl_utils::AtomicBuffer< T >::Push ( T &&  item)
inline

Pushes an item to the queue.

◆ Terminate()

template<typename T >
void ctrl_utils::AtomicBuffer< T >::Terminate ( )
inline

Terminates the queue.

All currently waiting threads will receive an empty-initialized T.


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