码迷,mamicode.com
首页 > 其他好文 > 详细

索求和释放“各个锁定”

时间:2015-07-26 20:58:53      阅读:125      评论:0      收藏:0      [点我收藏+]

标签:

技术分享注:调用 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;
}

技术分享锁定数据的时机:

技术分享技术分享

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

索求和释放“各个锁定”

标签:

原文地址:http://blog.csdn.net/wangfengfan1/article/details/47070681

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!