Version: 3.1.0
wxMessageQueue< T > Class Template Reference

#include <wx/msgqueue.h>

Detailed Description

template<typename T>
class wxMessageQueue< T >

wxMessageQueue allows passing messages between threads.

This class should be typically used to communicate between the main and worker threads. The main thread calls wxMessageQueue::Post and the worker thread calls wxMessageQueue::Receive.

Template Parameters
TFor this class a message is an object of arbitrary type T.

Notice that often there is a some special message indicating that the thread should terminate as there is no other way to gracefully shutdown a thread waiting on the message queue.

Since
2.9.0

Library:  None; this class implementation is entirely header-based.
Category:  Threading
See Also
wxThread

Public Member Functions

 wxMessageQueue ()
 Default and only constructor.
 
wxMessageQueueError Clear ()
 Remove all messages from the queue.
 
bool IsOk () const
 Returns true if the object had been initialized successfully, false if an error occurred.
 
wxMessageQueueError Post (T const &msg)
 Add a message to this queue and signal the threads waiting for messages (i.e.
 
wxMessageQueueError Receive (T &msg)
 Block until a message becomes available in the queue.
 
wxMessageQueueError ReceiveTimeout (long timeout, T &msg)
 Block until a message becomes available in the queue, but no more than timeout milliseconds has elapsed.
 

Constructor & Destructor Documentation

template<typename T >
wxMessageQueue< T >::wxMessageQueue ( )

Default and only constructor.

Use wxMessageQueue::IsOk to check if the object was successfully initialized.

Member Function Documentation

template<typename T >
wxMessageQueueError wxMessageQueue< T >::Clear ( )

Remove all messages from the queue.

This method is meant to be called from the same thread(s) that call Post() to discard any still pending requests if they became unnecessary.

Since
2.9.1
template<typename T >
bool wxMessageQueue< T >::IsOk ( ) const

Returns true if the object had been initialized successfully, false if an error occurred.

template<typename T >
wxMessageQueueError wxMessageQueue< T >::Post ( T const &  msg)

Add a message to this queue and signal the threads waiting for messages (i.e.

the threads which called wxMessageQueue::Receive or wxMessageQueue::ReceiveTimeout).

This method is safe to call from multiple threads in parallel.

template<typename T >
wxMessageQueueError wxMessageQueue< T >::Receive ( T &  msg)

Block until a message becomes available in the queue.

Waits indefinitely long or until an error occurs.

The message is returned in msg.

template<typename T >
wxMessageQueueError wxMessageQueue< T >::ReceiveTimeout ( long  timeout,
T &  msg 
)

Block until a message becomes available in the queue, but no more than timeout milliseconds has elapsed.

If no message is available after timeout milliseconds then returns wxMSGQUEUE_TIMEOUT.

If timeout is 0 then checks for any messages present in the queue and returns immediately without waiting.

The message is returned in msg.