Sirikata
Classes | Public Member Functions | Private Member Functions | Private Attributes | Friends
Sirikata::LockFreeQueue< T > Class Template Reference

A queue of any type that has thread-safe push() and pop() functions. More...

#include <LockFreeQueue.hpp>

Collaboration diagram for Sirikata::LockFreeQueue< T >:

List of all members.

Classes

class  FreeNodePool
struct  Node
class  NodeIterator

Public Member Functions

 LockFreeQueue ()
 ~LockFreeQueue ()
void push (const T &value)
 Pushes value onto the queue.
bool pop (T &value)
 Pops the front value from the queue and places it in value.
void blockingPop (T &item)
void swap (std::deque< T > &swapWith)
void popAll (std::deque< T > *toPop)
bool probablyEmpty ()

Private Member Functions

Nodefork ()

Private Attributes

class
Sirikata::LockFreeQueue::FreeNodePool 
mFreeNodePool
volatile NodemHead
volatile NodemTail

Friends

class NodeIterator

Detailed Description

template<typename T>
class Sirikata::LockFreeQueue< T >

A queue of any type that has thread-safe push() and pop() functions.


Constructor & Destructor Documentation

template<typename T>
Sirikata::LockFreeQueue< T >::LockFreeQueue ( ) [inline]
template<typename T>
Sirikata::LockFreeQueue< T >::~LockFreeQueue ( ) [inline]

Member Function Documentation

template<typename T>
void Sirikata::LockFreeQueue< T >::blockingPop ( T &  item) [inline]
template<typename T>
Node* Sirikata::LockFreeQueue< T >::fork ( ) [inline, private]
template<typename T>
bool Sirikata::LockFreeQueue< T >::pop ( T &  value) [inline]

Pops the front value from the queue and places it in value.

Parameters:
valueWill have the T at the front of the queue copied into it.
Returns:
whether value was changed (if the queue had at least one item).

References Sirikata::compare_and_swap(), Sirikata::LockFreeQueue< T >::mFreeNodePool, Sirikata::LockFreeQueue< T >::mHead, Sirikata::LockFreeQueue< T >::Node::mNext, Sirikata::LockFreeQueue< T >::mTail, and Sirikata::LockFreeQueue< T >::FreeNodePool::release().

Referenced by Sirikata::LockFreeQueue< T >::popAll().

template<typename T>
void Sirikata::LockFreeQueue< T >::popAll ( std::deque< T > *  toPop) [inline]
template<typename T>
bool Sirikata::LockFreeQueue< T >::probablyEmpty ( ) [inline]
template<typename T>
void Sirikata::LockFreeQueue< T >::push ( const T &  value) [inline]
template<typename T>
void Sirikata::LockFreeQueue< T >::swap ( std::deque< T > &  swapWith) [inline]

Friends And Related Function Documentation

template<typename T>
friend class NodeIterator [friend]

Member Data Documentation

template<typename T>
volatile Node* Sirikata::LockFreeQueue< T >::mHead [private]
template<typename T>
volatile Node* Sirikata::LockFreeQueue< T >::mTail [private]

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