索求和释放“各个锁定”

注:调用 My WaitForSingleObject()会做出锁定操作,,调用ReleaseMutex()或RelaeseSemaphore()则会做出解除锁定的操作。

BOOL AcquireReadLock(RWLock *pLock){BOOL result = TRUE;if (!MyWaitForSingleObject(pLock->hMutex))return FALSE;if (++pLock->nReaderCount == 1)result = MyWaitForSingleObject(pLock->hDataLock);ReleaseMutex(pLock->hMutex);return result;}BOOL ReleaseReadLock(RWLock * pLock){int result;LONG lPrevCount;if (!MyWaitForSingleObject(pLock->hMutex))return FALSE;if (–pLock->nReaderCount == 0){result = ReleaseSemapore(pLock->hDataLock, 1, &lPrevCount);}ReleaseMutex(pLock->hMutex);return result;}BOOL AcquireWriteLock(RWLock *pLock){return MyWaitForSingleObject(pLock->hDataLock);}BOOL ReleaseWriteLock(RWLock *pLock){int result;LONG lPrevCount;result = ReleaseSemaphore(pLock->hDataLock, 1, &PrevCount);if (lPrevCount != 0)FatalError("ReleaseWriteLock – Semaphore was not locked!");return result;}

锁定数据的时机:

版权声明:本文为博主原创文章,未经博主允许不得转载。

呼唤你前往另一个地方,过上另一种生活。

索求和释放“各个锁定”

相关文章:

你感兴趣的文章:

标签云: