From 49b1226781c3f6d3ea0248328e77254d5af54ee2 Mon Sep 17 00:00:00 2001 From: Guido van Rossum Date: Thu, 14 Aug 1997 20:12:58 +0000 Subject: 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 :-). --- Python/thread_nt.h | 24 ++++++++---------------- 1 file changed, 8 insertions(+), 16 deletions(-) diff --git a/Python/thread_nt.h b/Python/thread_nt.h index d65569c..194298d 100644 --- a/Python/thread_nt.h +++ b/Python/thread_nt.h @@ -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 +#include +#include 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) -- cgit v0.12