From d525130f0403aff59eca72693d9a15648741e88e Mon Sep 17 00:00:00 2001 From: Christopher Faylor Date: Tue, 22 Oct 2002 20:16:31 +0000 Subject: * cygthread.cc (cygthread::exiting): New variable. (cygthread::initialized): Delete. (cygthread::stub): Use exiting variable to determine when to exit. (cygthread::runner): Delete. (cygthread_protect): New variable. (cygthread::init): Don't start runner thread. Initialize muto for list protection. (cygthread::freerange): Return pointer to cygthread. (cygthread::operator new): Change logic to start threads on an as-needed basis. (cygthread::detach): Don't zero id. (cygthread::terminate): Don't kill any executing threads. Just set exiting flag. * cygthread.h (cygthread): Reflect above changes. * dcrt0.cc (dll_crt0_1): Move cygthread initialization later. * fork.cc (fork_child): Do fdtab fixup after dll fixup or (apparently) winsock may allocate memory in dll load address. --- winsup/cygwin/cygthread.h | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) (limited to 'winsup/cygwin/cygthread.h') diff --git a/winsup/cygwin/cygthread.h b/winsup/cygwin/cygthread.h index ded205f30..774c656da 100644 --- a/winsup/cygwin/cygthread.h +++ b/winsup/cygwin/cygthread.h @@ -18,9 +18,7 @@ class cygthread VOID *arg; bool is_freerange; static DWORD main_thread_id; - static int initialized; - static DWORD WINAPI runner (VOID *); - static DWORD WINAPI free_runner (VOID *); + static bool exiting; static DWORD WINAPI stub (VOID *); static DWORD WINAPI simplestub (VOID *); public: @@ -32,7 +30,7 @@ class cygthread operator HANDLE (); static bool is (); void * operator new (size_t); - static void * freerange (); + static cygthread *freerange (); void exit_thread (); static void terminate (); bool SetThreadPriority (int nPriority) {return ::SetThreadPriority (h, nPriority);} -- cgit v1.2.3