X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/d1bab566475b6573c1c0c982eec395c6d8eef13a..d2dfef5f3f0152ad9b30092168869fec0698e6bf:/include/wx/thread.h?ds=sidebyside diff --git a/include/wx/thread.h b/include/wx/thread.h index b3cc0a45f0..86b94bd467 100644 --- a/include/wx/thread.h +++ b/include/wx/thread.h @@ -22,11 +22,6 @@ #if wxUSE_THREADS -// only for wxUSE_THREADS - otherwise we'd get undefined symbols -#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) - #pragma interface "thread.h" -#endif - // Windows headers define it #ifdef Yield #undef Yield @@ -177,10 +172,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; } @@ -209,7 +204,7 @@ private: // in order to avoid any overhead under platforms where critical sections are // just mutexes make all wxCriticalSection class functions inline -#if !defined(__WXMSW__) +#if !defined(__WXMSW__) && !defined(__WXMAC__) #define wxCRITSECT_IS_MUTEX 1 #define wxCRITSECT_INLINE inline @@ -249,7 +244,11 @@ private: // finally, we need this typedef instead of declaring m_buffer directly // because otherwise the assert mentioned above wouldn't compile with some // compilers (notably CodeWarrior 8) +#ifdef __WIN64__ + typedef char wxCritSectBuffer[40]; +#else // __WIN32__ typedef char wxCritSectBuffer[24]; +#endif union { unsigned long m_dummy1; @@ -257,6 +256,8 @@ private: wxCritSectBuffer m_buffer; }; +#elif defined(__WXMAC__) + void *m_critRegion ; #endif // Unix&OS2/Win32 DECLARE_NO_COPY_CLASS(wxCriticalSection) @@ -275,7 +276,7 @@ private: #undef wxCRITSECT_IS_MUTEX // wxCriticalSectionLocker is the same to critical sections as wxMutexLocker is -// to th mutexes +// to mutexes class WXDLLIMPEXP_BASE wxCriticalSectionLocker { public: @@ -311,11 +312,11 @@ 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 - // + // // it atomically releases the lock on the associated mutex // and starts waiting to be woken up by a Signal()/Broadcast() // once its signaled, then it will wait until it can reacquire @@ -324,9 +325,9 @@ 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 wxCondError WaitTimeout(unsigned long milliseconds); @@ -373,7 +374,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 @@ -399,7 +400,7 @@ private: }; // ---------------------------------------------------------------------------- -// wxThread: class encpasulating a thread of execution +// wxThread: class encapsulating a thread of execution // ---------------------------------------------------------------------------- // there are two different kinds of threads: joinable and detached (default) @@ -459,7 +460,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); @@ -546,16 +547,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); @@ -732,21 +733,19 @@ public: #if wxUSE_THREADS -#if defined(__WXMSW__) || defined(__WXMAC__) || defined(__WXPM__) +#if defined(__WXMSW__) || defined(__WXMAC__) || defined(__OS2__) || defined(__EMX__) // unlock GUI if there are threads waiting for and lock it back when // there are no more of them - should be called periodically by the main // 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__ // wakes up the main thread if it's sleeping inside ::GetMessage() 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 @@ -754,4 +753,3 @@ public: #endif // wxUSE_THREADS #endif // _WX_THREAD_H_ -