Files
wnmj-normal/Servers/服务器组件/服务核心/WHDataLocker.cpp
2026-03-03 13:56:44 +08:00

63 lines
872 B
C++

#include "StdAfx.h"
#include "WHDataLocker.h"
//////////////////////////////////////////////////////////////////////////////////
//构造函数
CWHDataLocker::CWHDataLocker(CCriticalSection & CriticalSection, bool bLockAtOnce)
: m_CriticalSection(CriticalSection)
{
//设置变量
m_nLockCount=0;
//锁定对象
if (bLockAtOnce==true)
{
Lock();
}
return;
}
//析构函数
CWHDataLocker::~CWHDataLocker()
{
//解除锁定
while (m_nLockCount>0)
{
UnLock();
}
return;
}
//锁定函数
VOID CWHDataLocker::Lock()
{
//锁定对象
m_CriticalSection.Lock();
//设置变量
m_nLockCount++;
return;
}
//解锁函数
VOID CWHDataLocker::UnLock()
{
//效验状态
ASSERT(m_nLockCount>0);
if (m_nLockCount==0) return;
//设置变量
m_nLockCount--;
//解除锁定
m_CriticalSection.Unlock();
return;
}
//////////////////////////////////////////////////////////////////////////////////