ConcurrentQueue< T > Class Template Reference

FIFO queue for threadsafe access. More...

#include <ConcurrentQueue.hh>

Public Member Functions

 ConcurrentQueue (int size)
 Constructor. More...
 
bool enqueue (T data)
 Add a data object to tail. More...
 
bool dequeue (T &data)
 Remove data object from head. More...
 
void clear ()
 Clear queue. More...
 
int length () const
 Returns queue's current size. More...
 

Private Member Functions

bool isFull () const
 Returns whether queue is full. More...
 
bool isEmpty () const
 Returns whether queue is empty. More...
 

Private Attributes

std::condition_variable cond_var
 Condition variable. More...
 
std::mutex mutex
 Mutex. More...
 
std::queue< T > queue
 Generic queue. More...
 
int max_size
 Max size of queue. More...
 

Detailed Description

template<typename T>
class ConcurrentQueue< T >

FIFO queue for threadsafe access.

Generic concurrent access queue for consumer-producer scenario. Heavily inspired in this gist .

Constructor & Destructor Documentation

ConcurrentQueue ( int  size)
inline

Constructor.

Parameters
sizemaximum queue size

Member Function Documentation

void clear ( )
inline

Clear queue.

bool dequeue ( T &  data)
inline

Remove data object from head.

Parameters
dataRemoved object
Returns
true if successful, false otherwise
bool enqueue ( data)
inline

Add a data object to tail.

Parameters
dataObject to add
Returns
true if successful, false otherwise
bool isEmpty ( ) const
inlineprivate

Returns whether queue is empty.

Returns
true if queue is empty, false otherwise
bool isFull ( ) const
inlineprivate

Returns whether queue is full.

Returns
true if queue is full, false otherwise
int length ( ) const
inline

Returns queue's current size.

Returns
queue current size

Member Data Documentation

std::condition_variable cond_var
private

Condition variable.

int max_size
private

Max size of queue.

std::mutex mutex
private

Mutex.

std::queue<T> queue
private

Generic queue.


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