]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Use _beginthread() and _endthread() in favor of CreateThread() and
authorGuido van Rossum <guido@python.org>
Thu, 14 Aug 1997 20:12:58 +0000 (20:12 +0000)
committerGuido van Rossum <guido@python.org>
Thu, 14 Aug 1997 20:12:58 +0000 (20:12 +0000)
ExitThread().  As discussed in c.l.p, this takes care of
initialization and finalization of thread-local storage allocated by
the C runtime system.  Not sure whether non-MS compilers grok this
though (but who cares :-).

Python/thread_nt.h

index d65569c0d41b1eb74a46fcaea5dafacbfc9cc60d..194298d5f1585ea1774af58649043cfa27a42333 100644 (file)
@@ -31,8 +31,9 @@ PERFORMANCE OF THIS SOFTWARE.
 
 /* This code implemented by Dag.Gruneau@elsa.preseco.comm.se */
 
-#include "windows.h"
-#include "limits.h"
+#include <windows.h>
+#include <limits.h>
+#include <process.h>
 
 long get_thread_ident(void);
 
@@ -53,25 +54,16 @@ static void _init_thread(void)
  */
 int start_new_thread(void (*func)(void *), void *arg)
 {
-       HANDLE aThread;
-       DWORD aThreadId;
+       long rv;
+       int success = 0;
 
-       int success = 0;        /* init not needed when SOLARIS_THREADS and */
-                            /* C_THREADS implemented properly */
        dprintf(("%ld: start_new_thread called\n", get_thread_ident()));
        if (!initialized)
                init_thread();
 
-       aThread = CreateThread(
-                               NULL,                           /* No security attributes               */
-                               0,                              /* use default stack size               */
-                               (LPTHREAD_START_ROUTINE) func,  /* thread function                      */
-                               (LPVOID) arg,                   /* argument to thread function          */
-                               0,                              /* use the default creation flags       */
-                               &aThreadId);                    /* returns the thread identifier       */
+       rv = _beginthread(func, 0, arg); /* use default stack size */
  
-       if (aThread != NULL) {
-               CloseHandle(aThread);   /* We do not want to have any zombies hanging around */
+       if (rv != -1) {
                success = 1;
                dprintf(("%ld: start_new_thread succeeded: %ld\n", get_thread_ident(), aThreadId));
        }
@@ -99,7 +91,7 @@ static void do_exit_thread(int no_cleanup)
                        _exit(0);
                else
                        exit(0);
-       ExitThread(0);
+       _endthread();
 }
 
 void exit_thread(void)