| Version: 3.3.1

Public Member Functions | List of all members
wxMessageQueue< T > Class Template Reference
Class List by Category » Threading

`#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

  T | For 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. More...
wxMessageQueueError | Clear ()
| Remove all messages from the queue. More...
bool | IsOk () const
| Returns true if the object had been initialized successfully, false if an error occurred. More...
wxMessageQueueError | Post (T const &msg)
| Add a message to this queue and signal the threads waiting for messages (i.e. More...
wxMessageQueueError | Post (T &&msg)
| Post a message of move-only type. More...
wxMessageQueueError | Receive (T &msg)
| Block until a message becomes available in the queue. More...
wxMessageQueueError | ReceiveTimeout (long timeout, T &msg)
| Block until a message becomes available in the queue, but no more than timeout milliseconds has elapsed. More...

## Constructor & Destructor Documentation

## ◆ wxMessageQueue()

template<typename T >

wxMessageQueue< T >::wxMessageQueue | ( |  | ) |

Default and only constructor.

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

## Member Function Documentation

## ◆ Clear()

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

## ◆ IsOk()

template<typename T >

bool wxMessageQueue< T >::IsOk | ( |  | ) | const

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

## ◆ Post() [1/2]

template<typename T >

wxMessageQueueError wxMessageQueue< T >::Post | ( | T && | msg | ) |

Post a message of move-only type.

This function has the same semantics as the other overload but can be used for non-copyable (but movable) types.

Since
  3.3.0

## ◆ Post() [2/2]

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.

## ◆ Receive()

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.

## ◆ ReceiveTimeout()

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.