AtomicQueue Class Template Reference

#include <rtt/AtomicQueue.hpp>

List of all members.


Detailed Description

template<class T, class ReadPolicy = NonBlockingPolicy, class WritePolicy = NonBlockingPolicy>
class RTT::AtomicQueue< T, ReadPolicy, WritePolicy >

A lock-free queue implementation to enqueue or dequeue a pointer of type T.

No memory allocation is done during read or write, but the maximum number of threads which can access this object is defined by MAX_THREADS.

Parameters:
T The pointer type to be stored in the queue. Example : AtomicQueue<A*> is a queue which holds values of type A.
ReadPolicy The Policy to block (wait) on empty (during dequeue) using BlockingPolicy, or to return false, using NonBlockingPolicy (Default). This does not influence partial filled queue behaviour.
WritePolicy The Policy to block (wait) on full (during enqueue), using BlockingPolicy, or to return false, using NonBlockingPolicy (Default). This does not influence partial filled buffer behaviour.

Definition at line 66 of file AtomicQueue.hpp.


Public Types

typedef T value_t
typedef unsigned int size_type

Public Member Functions

 AtomicQueue (unsigned int lsize, unsigned int threads=ORONUM_OS_MAX_THREADS)
 Create a lock-free queue wich can store lsize elements.
size_type capacity () const
size_type size () const
bool isEmpty () const
 Inspect if the Queue is empty.
bool isFull () const
 Inspect if the Queue is full.
void clear ()
bool enqueue (const T &value)
 Enqueue an item.
int enqueueCounted (const T &value)
 Enqueue an item and return its 'ticket' number.
bool dequeue (T &result)
 Dequeue an item.
int dequeueCounted (T &result)
 Dequeue an item and return the same 'ticket' number when it was queued.
template<class MPoolType>
lockfront (MPoolType &mp) const
 Return the next to be read value and lock it in a MemoryPool, such that it is not freed.
value_t front () const
 Returns the first element of the queue.
value_t back () const
 Returns the last element of the queue.

Public Attributes

const unsigned int MAX_THREADS
 The maximum number of threads.

Constructor & Destructor Documentation

AtomicQueue ( unsigned int  lsize,
unsigned int  threads = ORONUM_OS_MAX_THREADS 
) [inline]

Create a lock-free queue wich can store lsize elements.

Parameters:
lsize the capacity of the queue.
threads the number of threads which may concurrently read or write this buffer. Defaults to ORONUM_OS_MAX_THREADS, but you may lower this number in case not all threads will read this buffer. A lower number will consume less memory. '

Definition at line 149 of file AtomicQueue.hpp.


Member Function Documentation

bool isEmpty (  )  const [inline]

Inspect if the Queue is empty.

Returns:
true if empty, false otherwise.

Definition at line 184 of file AtomicQueue.hpp.

bool isFull (  )  const [inline]

Inspect if the Queue is full.

Returns:
true if full, false otherwise.

Definition at line 197 of file AtomicQueue.hpp.

bool enqueue ( const T &  value  )  [inline]

Enqueue an item.

Parameters:
value The value to enqueue.
Returns:
false if queue is full, true if queued.

Definition at line 231 of file AtomicQueue.hpp.

Referenced by FixedSizeMemoryPool::deallocate(), AtomicQueue< void * >::enqueueCounted(), and FixedSizeMemoryPool::make_pool().

int enqueueCounted ( const T &  value  )  [inline]

Enqueue an item and return its 'ticket' number.

Parameters:
value The value to enqueue.
Returns:
zero if the queue is full, the 'ticket' number otherwise.
Deprecated:
Do not use this function

Definition at line 262 of file AtomicQueue.hpp.

bool dequeue ( T &  result  )  [inline]

Dequeue an item.

Parameters:
result The value dequeued.
Returns:
false if queue is empty, true if dequeued.

Definition at line 276 of file AtomicQueue.hpp.

Referenced by FixedSizeMemoryPool::allocate(), and AtomicQueue< void * >::dequeueCounted().

int dequeueCounted ( T &  result  )  [inline]

Dequeue an item and return the same 'ticket' number when it was queued.

Parameters:
value The value dequeued.
Returns:
zero if the queue is empty, the 'ticket' number otherwise.
Deprecated:
Do not use this function

Definition at line 310 of file AtomicQueue.hpp.

T lockfront ( MPoolType &  mp  )  const [inline]

Return the next to be read value and lock it in a MemoryPool, such that it is not freed.

The returned pointer must be unlock()'ed by the user's code.

Definition at line 326 of file AtomicQueue.hpp.


Member Data Documentation

const unsigned int MAX_THREADS

The maximum number of threads.

The number of threads which may concurrently access this buffer.

Definition at line 74 of file AtomicQueue.hpp.


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

Generated on Mon Jan 19 16:53:56 2009 for OrocosReal-TimeToolkit by  doxygen 1.5.6