Main MRPT website > C++ reference
MRPT logo
Public Member Functions | Protected Attributes
mrpt::utils::CThreadSafeQueue Class Reference

Detailed Description

A thread-safe template queue for object passing between threads; for a template argument of T, the objects being passed in the queue are "T*".

Usage example:

 // Declaration:
 CThreadSafeQueue<MyMsgType>  tsq;
 ...

 // Thread 1: Write
 {
   MyMsgType *msg = new MyMsgType;
   msg->...
   tsq.push(msg);  // Insert in the queue
 }

 // Thread 2: Read
 {
   MyMsgType *msg = tsq.get();
   if (msg)
   {
      // Process "msg"...
      delete msg;
   }
 }

Note that only dynamically allocated objects can be inserted with push() and that freeing that memory if responsibility of the receiver of this queue as it receives objects with get(). However, elements still in the queue upon destruction will be deleted automatically.

See also:
mrpt::utils::CMessageQueue

#include <mrpt/utils/CThreadSafeQueue.h>

Inheritance diagram for mrpt::utils::CThreadSafeQueue:
Inheritance graph
[legend]

List of all members.

Public Member Functions

 CThreadSafeQueue ()
 Default ctor.
virtual ~CThreadSafeQueue ()
void clear ()
 Clear the queue of messages, freeing memory as required.
void push (T *msg)
 Insert a new message in the queue - The object must be created with "new", and do not delete is after calling this, it must be deleted later.
T * get ()
 Retrieve the next message in the queue, or NULL if there is no message.
T * get_lastest_purge_old ()
 Skip all old messages in the queue and directly return the last one (the most recent, at the bottom of the queue), or NULL if there is no message.
bool empty () const
 Return true if there are no messages.
size_t size () const
 Return the number of queued messages.

Protected Attributes

std::queue< T * > m_msgs
 The queue of messages. Memory is freed at destructor or by clients gathering messages.
mrpt::synch::CCriticalSection m_csQueue
 The critical section.

Constructor & Destructor Documentation

mrpt::utils::CThreadSafeQueue::CThreadSafeQueue ( ) [inline]

Default ctor.

Definition at line 81 of file CThreadSafeQueue.h.

virtual mrpt::utils::CThreadSafeQueue::~CThreadSafeQueue ( ) [inline, virtual]

Definition at line 83 of file CThreadSafeQueue.h.


Member Function Documentation

void mrpt::utils::CThreadSafeQueue::clear ( void  ) [inline]

Clear the queue of messages, freeing memory as required.

Definition at line 89 of file CThreadSafeQueue.h.

Referenced by mrpt::utils::CThreadSafeQueue< CMessage >::~CThreadSafeQueue().

bool mrpt::utils::CThreadSafeQueue::empty ( ) const [inline]

Return true if there are no messages.

Definition at line 145 of file CThreadSafeQueue.h.

T* mrpt::utils::CThreadSafeQueue::get ( ) [inline]

Retrieve the next message in the queue, or NULL if there is no message.

The user MUST call "delete" with the returned object after use.

Definition at line 110 of file CThreadSafeQueue.h.

T* mrpt::utils::CThreadSafeQueue::get_lastest_purge_old ( ) [inline]

Skip all old messages in the queue and directly return the last one (the most recent, at the bottom of the queue), or NULL if there is no message.

Note:
The memory of all skipped messages is freed with "delete".
The user MUST call "delete" with the returned object after use.

Definition at line 127 of file CThreadSafeQueue.h.

void mrpt::utils::CThreadSafeQueue::push ( T *  msg) [inline]

Insert a new message in the queue - The object must be created with "new", and do not delete is after calling this, it must be deleted later.

Definition at line 101 of file CThreadSafeQueue.h.

size_t mrpt::utils::CThreadSafeQueue::size ( ) const [inline]

Return the number of queued messages.

Definition at line 152 of file CThreadSafeQueue.h.


Member Data Documentation




Page generated by Doxygen 1.7.5 for MRPT 0.9.5 SVN: at Thu Oct 13 21:25:36 UTC 2011