diff Python/thread_nt.h @ 6029:68f2d7704180 legacy-trunk

Use _beginthread() and _endthread() in favor of CreateThread() and 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 :-).
author Guido van Rossum <guido@python.org>
date Thu, 14 Aug 1997 20:12:58 +0000
parents 65d2d8e67da3
children 877d23bd5bdc
line wrap: on
line diff
--- a/Python/thread_nt.h	Thu Aug 14 20:11:26 1997 +0000
+++ b/Python/thread_nt.h	Thu Aug 14 20:12:58 1997 +0000
@@ -31,8 +31,9 @@
 
 /* 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 @@
  */
 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 @@
 			_exit(0);
 		else
 			exit(0);
-	ExitThread(0);
+	_endthread();
 }
 
 void exit_thread(void)