#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; } //////////////////////////////////////////////////////////////////////////////////