You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
- #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;
- }
-
- //////////////////////////////////////////////////////////////////////////////////
|