X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/db034c5228345497d775ab000b3cd19560f170c1..a5655d37db9baabce654849fd66173f95f74e230:/interface/wx/thread.h diff --git a/interface/wx/thread.h b/interface/wx/thread.h index 3dcb9f3f2a..34d98462fd 100644 --- a/interface/wx/thread.h +++ b/interface/wx/thread.h @@ -3,7 +3,7 @@ // Purpose: interface of all thread-related wxWidgets classes // Author: wxWidgets team // RCS-ID: $Id$ -// Licence: wxWindows license +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// @@ -309,14 +309,14 @@ public: char m_data[1024]; wxCriticalSection m_dataCS; // protects field above - DECLARE_EVENT_TABLE() + wxDECLARE_EVENT_TABLE(); }; wxDEFINE_EVENT(wxEVT_COMMAND_MYTHREAD_UPDATE, wxThreadEvent) - BEGIN_EVENT_TABLE(MyFrame, wxFrame) + wxBEGIN_EVENT_TABLE(MyFrame, wxFrame) EVT_COMMAND(wxID_ANY, wxEVT_COMMAND_MYTHREAD_UPDATE, MyFrame::OnThreadUpdate) EVT_CLOSE(MyFrame::OnClose) - END_EVENT_TABLE() + wxEND_EVENT_TABLE() void MyFrame::DoStartALongTask() { @@ -518,6 +518,10 @@ enum wxCriticalSectionType @library{wxbase} @category{threading} + @note Critical sections can be used before the wxWidgets library is fully + initialized. In particular, it's safe to create global + wxCriticalSection instances. + @see wxThread, wxCondition, wxCriticalSectionLocker */ class wxCriticalSection @@ -683,15 +687,15 @@ enum MyThread *m_pThread; wxCriticalSection m_pThreadCS; // protects the m_pThread pointer - DECLARE_EVENT_TABLE() + wxDECLARE_EVENT_TABLE(); }; - BEGIN_EVENT_TABLE(MyFrame, wxFrame) + wxBEGIN_EVENT_TABLE(MyFrame, wxFrame) EVT_CLOSE(MyFrame::OnClose) EVT_MENU(Minimal_Start, MyFrame::DoStartThread) EVT_COMMAND(wxID_ANY, wxEVT_COMMAND_MYTHREAD_UPDATE, MyFrame::OnThreadUpdate) EVT_COMMAND(wxID_ANY, wxEVT_COMMAND_MYTHREAD_COMPLETED, MyFrame::OnThreadCompletion) - END_EVENT_TABLE() + wxEND_EVENT_TABLE() wxDEFINE_EVENT(wxEVT_COMMAND_MYTHREAD_COMPLETED, wxThreadEvent) wxDEFINE_EVENT(wxEVT_COMMAND_MYTHREAD_UPDATE, wxThreadEvent) @@ -784,7 +788,7 @@ enum if (m_pThread) // does the thread still exist? { - m_out.Printf("MYFRAME: deleting thread"); + wxMessageOutputDebug().Printf("MYFRAME: deleting thread"); if (m_pThread->Delete() != wxTHREAD_NO_ERROR ) wxLogError("Can't delete the thread!"); @@ -989,7 +993,10 @@ public: /** Returns the platform specific thread ID of the current thread as a long. + This can be used to uniquely identify threads, even if they are not wxThreads. + + @see GetMainId() */ static wxThreadIdType GetCurrentId(); @@ -1007,6 +1014,15 @@ public: */ wxThreadKind GetKind() const; + /** + Returns the thread ID of the main thread. + + @see IsMain() + + @since 2.9.1 + */ + static wxThreadIdType GetMainId(); + /** Gets the priority of the thread, between zero and 100. @@ -1035,6 +1051,11 @@ public: /** Returns @true if the calling thread is the main application thread. + + Main thread in the context of wxWidgets is the one which initialized + the library. + + @see GetMainId(), GetCurrentId() */ static bool IsMain(); @@ -1104,6 +1125,10 @@ public: of detached threads. This function can only be called from another thread context. + + Finally, note that once a thread has completed and its Entry() function + returns, you cannot call Run() on it again (an assert will fail in debug + builds or @c wxTHREAD_RUNNING will be returned in release builds). */ wxThreadError Run();