#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
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; }
// 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
// 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;
wxCritSectBuffer m_buffer;
};
+#elif defined(__WXMAC__)
+ void *m_critRegion ;
#endif // Unix&OS2/Win32
DECLARE_NO_COPY_CLASS(wxCriticalSection)
#undef wxCRITSECT_IS_MUTEX
// wxCriticalSectionLocker is the same to critical sections as wxMutexLocker is
-// to th mutexes
+// to mutexes
class WXDLLIMPEXP_BASE wxCriticalSectionLocker
{
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
// 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);
// 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
};
// ----------------------------------------------------------------------------
-// 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)
// 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);
// 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);
#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
#endif // wxUSE_THREADS
#endif // _WX_THREAD_H_
-