From: simonmar Date: Mon, 15 Mar 2004 12:32:11 +0000 (+0000) Subject: [project @ 2004-03-15 12:32:11 by simonmar] X-Git-Tag: Initial_conversion_from_CVS_complete~1967 X-Git-Url: http://git.megacz.com/?a=commitdiff_plain;h=b2bc3ad78e48f172d11113f32ff225e25404a87b;p=ghc-hetmet.git [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). --- 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 ) {