From ae74e745f35402771a024e7bc47cfee6bf7eec73 Mon Sep 17 00:00:00 2001 From: Marty Kraimer Date: Fri, 6 Apr 2001 12:45:06 +0000 Subject: [PATCH] fix race condition --- src/db/dbLock.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/db/dbLock.c b/src/db/dbLock.c index d701811a8..cfdbec6b3 100644 --- a/src/db/dbLock.c +++ b/src/db/dbLock.c @@ -218,11 +218,14 @@ void epicsShareAPI dbLockSetRecordLock(dbCommon *precord) return; } plockSet->state = lockSetStateRecordLock; - while(plockSet->nWaiting) { + while(1) { epicsMutexUnlock(lockSetModifyLock); - epicsThreadSleep(.1); + epicsMutexMustLock(plockSet->lock); epicsMutexMustLock(lockSetModifyLock); + if(plockSet->nWaiting == 0) break; + epicsThreadSleep(.1); } + epicsMutexUnlock(plockSet->lock); ellDelete(&lockSetList[plockSet->type],&plockSet->node); ellAdd(&lockSetList[listTypeRecordLock],&plockSet->node); plockSet->type = listTypeRecordLock;