Files
wnmj/Servers/服务器组件/服务核心/WHDataLocker.cpp

63 lines
872 B
C++
Raw Normal View History

2026-02-13 14:34:15 +08:00
#include "StdAfx.h"
#include "WHDataLocker.h"
//////////////////////////////////////////////////////////////////////////////////
//<2F><><EFBFBD><EFBFBD><ECBAAF>
CWHDataLocker::CWHDataLocker(CCriticalSection & CriticalSection, bool bLockAtOnce)
: m_CriticalSection(CriticalSection)
{
//<2F><><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD>
m_nLockCount=0;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (bLockAtOnce==true)
{
Lock();
}
return;
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CWHDataLocker::~CWHDataLocker()
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
while (m_nLockCount>0)
{
UnLock();
}
return;
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
VOID CWHDataLocker::Lock()
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_CriticalSection.Lock();
//<2F><><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD>
m_nLockCount++;
return;
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
VOID CWHDataLocker::UnLock()
{
//Ч<><D0A7>״̬
ASSERT(m_nLockCount>0);
if (m_nLockCount==0) return;
//<2F><><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD>
m_nLockCount--;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_CriticalSection.Unlock();
return;
}
//////////////////////////////////////////////////////////////////////////////////