pion-net  4.0.7
Classes | Public Member Functions | Protected Types | Protected Member Functions
pion::PionLockFreeQueue Class Reference

#include <PionLockFreeQueue.hpp>

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

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


Member Function Documentation

volatile void pion::PionLockFreeQueue::clear ( void  ) [inline]

clears the queue by removing all remaining items WARNING: this is NOT thread-safe!

Definition at line 117 of file PionLockFreeQueue.hpp.

References empty(), destroyNode(), and boost::lockfree::tagged_ptr::get_ptr().

Referenced by ~PionLockFreeQueue().

bool pion::PionLockFreeQueue::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::get_ptr(), boost::lockfree::tagged_ptr::cas(), and destroyNode().

void pion::PionLockFreeQueue::push ( const T &  t) [inline]

pushes a new item into the back of the queue

Parameters:
tthe item to add to the back of the queue

Definition at line 131 of file PionLockFreeQueue.hpp.

References createNode(), boost::lockfree::tagged_ptr::get_ptr(), and boost::lockfree::tagged_ptr::cas().


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