pion-net  4.0.9
Classes | Public Member Functions | Protected Types | Protected Member Functions | List of all members
pion::PionLockFreeQueue< T > Class Template Reference

#include <PionLockFreeQueue.hpp>

Inherits noncopyable.

Classes

struct  QueueNode
 data structure used to wrap each item in the queue More...
 

Public Member Functions

 PionLockFreeQueue (void)
 constructs a new PionLockFreeQueue
 
virtual ~PionLockFreeQueue ()
 virtual destructor
 
bool empty (void) const
 returns true if the queue is empty; false if it is not
 
std::size_t size (void) const
 returns the number of items that are currently in the queue
 
volatile void clear (void)
 
void push (const T &t)
 
bool pop (T &t)
 

Protected Types

typedef boost::lockfree::tagged_ptr< QueueNodeQueueNodePtr
 data type for an atomic QueueNode pointer
 

Protected Member Functions

QueueNodecreateNode (void)
 returns a new queue node item for use in the queue
 
void destroyNode (QueueNode *node_ptr)
 frees memory for an existing queue node item
 

Detailed Description

template<typename T>
class pion::PionLockFreeQueue< T >

PionLockFreeQueue: a FIFO queue that is thread-safe and lock-free

Definition at line 51 of file PionLockFreeQueue.hpp.

Member Function Documentation

template<typename T >
volatile void pion::PionLockFreeQueue< T >::clear ( void  )
inline
template<typename T >
bool pion::PionLockFreeQueue< T >::pop ( T &  t)
inline

pops the next item from the top of the queue

Parameters
tassigned to the item at the top of the queue, if it is not empty
Returns
true if an item was retrieved, false if the queue is empty

Definition at line 173 of file PionLockFreeQueue.hpp.

References boost::lockfree::tagged_ptr< T >::cas(), pion::PionLockFreeQueue< T >::QueueNode::data, pion::PionLockFreeQueue< T >::destroyNode(), boost::lockfree::tagged_ptr< T >::get_ptr(), and pion::PionLockFreeQueue< T >::QueueNode::next.

template<typename T >
void pion::PionLockFreeQueue< T >::push ( const T &  t)
inline

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