AtomicQueue Class Template Reference

#include </home/sspr/src/www/orocos-1.0/export/build/orocos-rtt-1.2.2/build/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.


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. '


Member Function Documentation

bool isEmpty (  )  const [inline]

Inspect if the Queue is empty.

Returns:
true if empty, false otherwise.

bool isFull (  )  const [inline]

Inspect if the Queue is full.

Returns:
true if full, false otherwise.

bool enqueue ( const T &  value  )  [inline]

Enqueue an item.

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

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

bool dequeue ( T &  result  )  [inline]

Dequeue an item.

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

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

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.


Member Data Documentation

const unsigned int MAX_THREADS

The maximum number of threads.

The number of threads which may concurrently access this buffer.


The documentation for this class was generated from the following file:
Generated on Fri Oct 19 16:27:21 2007 for Orocos by  doxygen 1.5.1