]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/thread.h
more Unicode fixes for help files
[wxWidgets.git] / include / wx / thread.h
index a4c4b465df675a18b85ff13a48f20618f7e07589..72c708e51ffef4f5b3e693a5908ba13547fd0d46 100644 (file)
@@ -150,11 +150,11 @@ class WXDLLEXPORT wxCriticalSectionInternal;
 
 // in order to avoid any overhead under platforms where critical sections are
 // just mutexes make all wxCriticalSection class functions inline
-#if !defined(__WXMSW__) && !defined(__WXPM__) && !defined(__WXMAC__)
+#if !defined(__WXMSW__) && !defined(__WXPM__)
     #define WXCRITICAL_INLINE   inline
 
     #define wxCRITSECT_IS_MUTEX 1
-#else // MSW || Mac || OS2
+#else // MSW || OS2
     #define WXCRITICAL_INLINE
 
     #define wxCRITSECT_IS_MUTEX 0
@@ -286,6 +286,16 @@ 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.
+       // On VMS thread pointers are 64 bits (also needed for other systems???
+#ifdef __VMS
+   static unsigned long long GetCurrentId();
+#else
+   static unsigned long GetCurrentId();
+#endif
+   
         // 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
@@ -303,8 +313,11 @@ public:
     // from _another_ thread (typically the thread that created this one, e.g.
     // the main thread), not from the thread itself
 
-        // create a new thread - call Run() to start it
-    wxThreadError Create();
+        // create a new thread and optionally set the stack size on
+        // platforms that support that - call Run() to start it
+        // (special cased for watcom which won't accept 0 default)
+
+    wxThreadError Create(unsigned int stackSize = 0);
 
         // starts execution of the thread - from the moment Run() is called
         // the execution of wxThread::Entry() may start at any moment, caller
@@ -368,7 +381,11 @@ public:
 
     // Get the thread ID - a platform dependent number which uniquely
     // identifies a thread inside a process
-    unsigned long GetId() const;
+#ifdef __VMS
+   unsigned long long GetId() const;
+#else
+   unsigned long GetId() const;
+#endif
 
     // called when the thread exits - in the context of this thread
     //
@@ -471,7 +488,7 @@ public:
     // wxApp then should block all "dangerous" messages
     extern bool WXDLLEXPORT wxIsWaitingForThread();
 #elif defined(__WXMAC__)
-    extern void WXDLLEXPORT wxMutexGuiLeaveOrEnter();
+   extern void WXDLLEXPORT wxMutexGuiLeaveOrEnter();
 
     // returns TRUE if the main thread has GUI lock
     extern bool WXDLLEXPORT wxGuiOwnedByMainThread();
@@ -482,6 +499,13 @@ public:
     // return TRUE if the main thread is waiting for some other to terminate:
     // wxApp then should block all "dangerous" messages
     extern bool WXDLLEXPORT wxIsWaitingForThread();
+
+    // implement wxCriticalSection using mutexes
+    inline wxCriticalSection::wxCriticalSection() { }
+    inline wxCriticalSection::~wxCriticalSection() { }
+
+    inline void wxCriticalSection::Enter() { (void)m_mutex.Lock(); }
+    inline void wxCriticalSection::Leave() { (void)m_mutex.Unlock(); }
 #elif defined(__WXPM__)
     // 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
@@ -514,3 +538,5 @@ public:
 #endif // wxUSE_THREADS
 
 #endif // __THREADH__
+
+// vi:sts=4:sw=4:et