yat  0.14.5pre
Public Types | Public Member Functions | List of all members
theplu::yat::utility::Queue< T > Class Template Reference

Multi-thread safe queue. More...

#include <yat/utility/Queue.h>

Public Types

typedef T value_type
 Type of object stored in Queue.
 
typedef std::deque< T >::size_type size_type
 

Public Member Functions

 Queue (void)
 Create a Queue with no elements.
 
 Queue (const Queue &other)
 Copy constructor. More...
 
bool empty (void) const
 
void pop (T &value)
 access next element in queue More...
 
void push (const T &t)
 insert an element into container
 
size_type size (void) const
 
bool try_pop (T &value)
 
Queueoperator= (const Queue &lhs)
 assignment operator
 

Detailed Description

template<typename T>
class theplu::yat::utility::Queue< T >

Multi-thread safe queue.

This class provides a multi-thread safe queue. The Queue is typically shared by multiple threads such that some threads push elements and some pop elements. The Queue is a "first in first out" container and holds the same functionality as the similar std::queue. The difference is that Queue is multi-thread safe, in other words, when one thread access the Queue, other threads are locked out from access so that only one thread touches the Queue at a time and its behaviour is well defined. In a single-thread application there is no point in using the class as std::queue should be prefereble.

Note
Copy constructor and assignment are available but they are not thread safe in the current implementation.
Since
New in yat 0.11
See Also
Boost Library provides a lock-free queue

Member Typedef Documentation

template<typename T>
typedef std::deque<T>::size_type theplu::yat::utility::Queue< T >::size_type

An unsigned integral type.

See Also
size(void)

Constructor & Destructor Documentation

template<typename T>
theplu::yat::utility::Queue< T >::Queue ( const Queue< T > &  other)
inline

Copy constructor.

Note
is not thread safe

Member Function Documentation

template<typename T>
bool theplu::yat::utility::Queue< T >::empty ( void  ) const
inline
Returns
true if container's size is zero
template<typename T>
void theplu::yat::utility::Queue< T >::pop ( T &  value)
inline

access next element in queue

Access the next element is queue. If container is empty, process is waiting until other process is inserting element into container.

template<typename T>
size_type theplu::yat::utility::Queue< T >::size ( void  ) const
inline
Returns
Number of elements stored in container
template<typename T>
bool theplu::yat::utility::Queue< T >::try_pop ( T &  value)
inline

If Queue is empty() do nothing and return false, else pop the element into value and return true


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

Generated on Tue Sep 26 2017 02:33:31 for yat by  doxygen 1.8.5