From 5fd13e73c653e8679558ced1e657bd9fec142104 Mon Sep 17 00:00:00 2001 From: Jeff Hill Date: Thu, 21 Mar 2002 22:25:22 +0000 Subject: [PATCH] moved once call out of mutex guard --- src/libCom/osi/os/WIN32/osdThread.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/libCom/osi/os/WIN32/osdThread.c b/src/libCom/osi/os/WIN32/osdThread.c index aa92d5e89..bb666359d 100644 --- a/src/libCom/osi/os/WIN32/osdThread.c +++ b/src/libCom/osi/os/WIN32/osdThread.c @@ -730,24 +730,30 @@ epicsShareFunc void epicsShareAPI epicsThreadOnceOsd ( { BOOL success; DWORD stat; + int doit; if ( ! win32ThreadInitOK ) { epicsThreadInit (); - if ( ! win32ThreadInitOK ) { - return; - } + assert ( win32ThreadInitOK ); } stat = WaitForSingleObject ( win32ThreadGlobalMutex, INFINITE ); assert ( stat == WAIT_OBJECT_0 ); if ( ! *id ) { - ( *func ) ( arg ); *id = 1; + doit = 1; + } + else { + doit = 0; } success = ReleaseMutex ( win32ThreadGlobalMutex ); assert ( success ); + + if ( doit ) { + ( *func ) ( arg ); + } } /*