From c096f614b94fc6462f6339e4aec6d0b673897e13 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Fri, 30 Apr 2004 21:31:52 +0000 Subject: [PATCH] made TestDestroy public and virtual git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@27027 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- docs/latex/wx/thread.tex | 12 ++++++++---- include/wx/thread.h | 28 ++++++++++++++-------------- 2 files changed, 22 insertions(+), 18 deletions(-) diff --git a/docs/latex/wx/thread.tex b/docs/latex/wx/thread.tex index 558d3cc709..9a504ebe54 100644 --- a/docs/latex/wx/thread.tex +++ b/docs/latex/wx/thread.tex @@ -102,7 +102,7 @@ One of: Calling \helpref{Delete}{wxthreaddelete} is a graceful way to terminate the thread. It asks the thread to terminate and, if the thread code is well -written, the thread will terminate after the next call to +written, the thread will terminate after the next call to \helpref{TestDestroy}{wxthreadtestdestroy} which should happen quite soon. However, if the thread doesn't call \helpref{TestDestroy}{wxthreadtestdestroy} @@ -341,17 +341,21 @@ Sets the thread concurrency level for this process. This is, roughly, the number of threads that the system tries to schedule to run in parallel. The value of $0$ for {\it level} may be used to set the default one. -Returns true on success or false otherwise (for example, if this function is +Returns \true on success or false otherwise (for example, if this function is not implemented for this platform -- currently everything except Solaris). \membersection{wxThread::TestDestroy}\label{wxthreadtestdestroy} -\func{bool}{TestDestroy}{\void} +\func{virtual bool}{TestDestroy}{\void} This function should be called periodically by the thread to ensure that calls to \helpref{Pause}{wxthreadpause} and \helpref{Delete}{wxthreaddelete} will -work. If it returns true, the thread should exit as soon as possible. +work. If it returns \true, the thread should exit as soon as possible. + +Notice that under some platforms (POSIX), implementation of +\helpref{Pause}{wxthreadpause} also relies on this function being called, so +not calling it would prevent both stopping and suspending thread from working. \membersection{wxThread::This}\label{wxthreadthis} diff --git a/include/wx/thread.h b/include/wx/thread.h index 1e7d9f215e..7d61023195 100644 --- a/include/wx/thread.h +++ b/include/wx/thread.h @@ -177,10 +177,10 @@ class WXDLLIMPEXP_BASE wxMutexLocker public: // lock the mutex in the ctor wxMutexLocker(wxMutex& mutex) - : m_isOk(FALSE), m_mutex(mutex) + : m_isOk(false), m_mutex(mutex) { m_isOk = ( m_mutex.Lock() == wxMUTEX_NO_ERROR ); } - // returns TRUE if mutex was successfully locked in ctor + // returns true if mutex was successfully locked in ctor bool IsOk() const { return m_isOk; } @@ -315,7 +315,7 @@ public: // dtor is not virtual, don't use this class polymorphically ~wxCondition(); - // return TRUE if the condition has been created successfully + // return true if the condition has been created successfully bool IsOk() const; // NB: the associated mutex MUST be locked beforehand by the calling thread @@ -328,8 +328,8 @@ public: // exactly as Wait() except that it may also return if the specified // timeout ellapses even if the condition hasn't been signalled: in this - // case, the return value is FALSE, otherwise (i.e. in case of a normal - // return) it is TRUE + // case, the return value is false, otherwise (i.e. in case of a normal + // return) it is true // // the timeeout parameter specifies a interval that needs to be waited in // milliseconds @@ -377,7 +377,7 @@ public: // dtor is not virtual, don't use this class polymorphically ~wxSemaphore(); - // return TRUE if the semaphore has been created successfully + // return true if the semaphore has been created successfully bool IsOk() const; // wait indefinitely, until the semaphore count goes beyond 0 @@ -463,7 +463,7 @@ public: // default value (usually acceptable, but may not yield the best // performance for this process) // - // Returns TRUE on success, FALSE otherwise (if not implemented, for + // Returns true on success, false otherwise (if not implemented, for // example) static bool SetConcurrency(size_t level); @@ -550,16 +550,16 @@ public: // NB: this function will not be called if the thread is Kill()ed virtual void OnExit() { } + // Returns true if the thread was asked to terminate: this function should + // be called by the thread from time to time, otherwise the main thread + // will be left forever in Delete()! + virtual bool TestDestroy(); + // dtor is public, but the detached threads should never be deleted - use // Delete() instead (or leave the thread terminate by itself) virtual ~wxThread(); protected: - // Returns TRUE if the thread was asked to terminate: this function should - // be called by the thread from time to time, otherwise the main thread - // will be left forever in Delete()! - bool TestDestroy(); - // exits from the current thread - can be called only from this thread void Exit(ExitCode exitcode = 0); @@ -742,7 +742,7 @@ public: // thread extern void WXDLLIMPEXP_BASE wxMutexGuiLeaveOrEnter(); - // returns TRUE if the main thread has GUI lock + // returns true if the main thread has GUI lock extern bool WXDLLIMPEXP_BASE wxGuiOwnedByMainThread(); #ifndef __WXPM__ @@ -750,7 +750,7 @@ public: extern void WXDLLIMPEXP_BASE wxWakeUpMainThread(); #endif // !OS/2 - // return TRUE if the main thread is waiting for some other to terminate: + // return true if the main thread is waiting for some other to terminate: // wxApp then should block all "dangerous" messages extern bool WXDLLIMPEXP_BASE wxIsWaitingForThread(); #endif // MSW, Mac, OS/2