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

#include <PionLockFreeQueue.hpp>

Inherits noncopyable.

List of all members.

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
< QueueNode
QueueNodePtr
 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: