From b2bc3ad78e48f172d11113f32ff225e25404a87b Mon Sep 17 00:00:00 2001 From: simonmar Date: Mon, 15 Mar 2004 12:32:11 +0000 Subject: [PATCH] [project @ 2004-03-15 12:32:11 by simonmar] Sync up with the stable branch (small change to the way worker threads exit that sneaked onto the branch by mistake). --- ghc/rts/win32/IOManager.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/ghc/rts/win32/IOManager.c b/ghc/rts/win32/IOManager.c index ca5fd4d..c08c4e3 100644 --- a/ghc/rts/win32/IOManager.c +++ b/ghc/rts/win32/IOManager.c @@ -70,6 +70,11 @@ IOWorkerProc(PVOID param) */ rc = WaitForMultipleObjects( 2, hWaits, FALSE, INFINITE ); + if (rc == WAIT_OBJECT_0) { + // we received the exit event + return 0; + } + EnterCriticalSection(&iom->manLock); /* Signal that the thread is 'non-idle' and about to consume * a work item. @@ -78,10 +83,7 @@ IOWorkerProc(PVOID param) iom->queueSize--; LeaveCriticalSection(&iom->manLock); - if ( WAIT_OBJECT_0 == rc ) { - /* shutdown */ - return 0; - } else if ( (WAIT_OBJECT_0 + 1) == rc ) { + if ( rc == (WAIT_OBJECT_0 + 1) ) { /* work item available, fetch it. */ if (FetchWork(pq,(void**)&work)) { if ( work->workKind & WORKER_READ ) { -- 1.7.10.4