X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/ae3c17b4013e80b99976c750c19fca47729517f6..6a3f8b4f1f1c802df93ce7bc05588536cb7a4dad:/interface/wx/msgqueue.h diff --git a/interface/wx/msgqueue.h b/interface/wx/msgqueue.h index 2b23de8b9a..3c3432f8a2 100644 --- a/interface/wx/msgqueue.h +++ b/interface/wx/msgqueue.h @@ -7,27 +7,34 @@ ///////////////////////////////////////////////////////////////////////////// /** - @wxheader{msgqueue.h} - 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. + threads. The main thread calls wxMessageQueue::Post and the worker thread + calls wxMessageQueue::Receive. + + @tparam T + For this class a message is an object of arbitrary type 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 + 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. @nolibrary - @category{FIXME} + @category{threading} @see wxThread */ +template class wxMessageQueue { public: + /** + Default and only constructor. + Use wxMessageQueue::IsOk to check if the object was successfully initialized. + */ + wxMessageQueue(); + /** Returns @true if the object had been initialized successfully, @false if an error occurred. @@ -38,32 +45,31 @@ public: 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. */ wxMessageQueueError Post(T const& msg); /** - Block until a message becomes available in the queue. Waits indefinitely long - or until an error occurs. - The message is returned in @e msg. + Block until a message becomes available in the queue. + Waits indefinitely long or until an error occurs. + + The message is returned in @a msg. */ wxMessageQueueError Receive(T& msg); /** Block until a message becomes available in the queue, but no more than @a timeout milliseconds has elapsed. + If no message is available after @a timeout milliseconds then returns @b wxMSGQUEUE_TIMEOUT. + If @a timeout is 0 then checks for any messages present in the queue and returns immediately without waiting. - The message is returned in @e msg. - */ - wxMessageQueueError ReceiveTimeout(long timeout, T& msg); - /** - Default and only constructor. Use wxMessageQueue::IsOk to check - if the object was successfully initialized. + The message is returned in @a msg. */ - wxMessageQueue(); + wxMessageQueueError ReceiveTimeout(long timeout, T& msg); };