diff --git a/src/libCom/misc/ipAddrToAsciiAsynchronous.cpp b/src/libCom/misc/ipAddrToAsciiAsynchronous.cpp index 68b5dab82..ecdef00ea 100644 --- a/src/libCom/misc/ipAddrToAsciiAsynchronous.cpp +++ b/src/libCom/misc/ipAddrToAsciiAsynchronous.cpp @@ -234,9 +234,12 @@ ipAddrToAsciiTransaction & ipAddrToAsciiEnginePrivate::createTransaction () void ipAddrToAsciiEnginePrivate::run () { + epicsGuard < epicsMutex > guard ( this->mutex ); while ( ! this->exitFlag ) { - this->laborEvent.wait (); - epicsGuard < epicsMutex > guard ( this->mutex ); + { + epicsGuardRelease < epicsMutex > unguard ( guard ); + this->laborEvent.wait (); + } while ( true ) { ipAddrToAsciiTransactionPrivate * pItem = this->labor.get (); if ( ! pItem ) {