Mercurial > cpython-lru_cache-weakref
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)
