X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/6fe7378863be6febaaab0e8aa855b51781351ac5..cbc906ceb79ba18e53fb94a563648b0347a1b15f:/include/wx/thread.h diff --git a/include/wx/thread.h b/include/wx/thread.h index c4f09dc254..7dd5cfa621 100644 --- a/include/wx/thread.h +++ b/include/wx/thread.h @@ -99,8 +99,6 @@ public: bool IsLocked() const { return (m_locked > 0); } protected: - friend class wxCondition; - // no assignment operator nor copy ctor wxMutex(const wxMutex&); wxMutex& operator=(const wxMutex&); @@ -234,9 +232,14 @@ public: // signal the condition // wakes up one (and only one) of the waiting threads void Signal(); - // wakes up all threads waiting onthis condition + // wakes up all threads waiting on this condition void Broadcast(); +#ifdef __WXDEBUG__ + // for debugging purposes only + void *GetId() const { return m_internal; } +#endif // __WXDEBUG__ + private: wxConditionInternal *m_internal; }; @@ -254,6 +257,13 @@ private: // created by the wxThread object while "main thread" is the thread created // during the process initialization (a.k.a. the GUI thread) +// On VMS thread pointers are 64 bits (also needed for other systems??? +#ifdef __VMS + typedef unsigned long long wxThreadIdType; +#else + typedef unsigned long wxThreadIdType; +#endif + class wxThreadInternal; class WXDLLEXPORT wxThread { @@ -286,6 +296,11 @@ public: // Returns -1 if unknown, number of CPUs otherwise static int GetCPUCount(); + // Get the platform specific thread ID and return as a long. This + // can be used to uniquely identify threads, even if they are not + // wxThreads. This is used by wxPython. + static wxThreadIdType GetCurrentId(); + // sets the concurrency level: this is, roughly, the number of threads // the system tries to schedule to run in parallel. 0 means the // default value (usually acceptable, but may not yield the best @@ -307,11 +322,7 @@ public: // platforms that support that - call Run() to start it // (special cased for watcom which won't accept 0 default) -#ifdef __WATCOMC__ - wxThreadError Create(unsigned int stackSize = 10240); -#else wxThreadError Create(unsigned int stackSize = 0); -#endif // starts execution of the thread - from the moment Run() is called // the execution of wxThread::Entry() may start at any moment, caller @@ -375,12 +386,8 @@ public: // Get the thread ID - a platform dependent number which uniquely // identifies a thread inside a process -#ifdef __VMS - unsigned long long GetId() const; -#else - unsigned long GetId() const; -#endif - + wxThreadIdType GetId() const; + // called when the thread exits - in the context of this thread // // NB: this function will not be called if the thread is Kill()ed