Files
Sun1602/Server/ShopServer/Uitl/CriticalSection.cpp
T
2022-10-26 12:25:11 +08:00

62 lines
926 B
C++

#include "stdafx.h"
#include "criticalsection.h"
using namespace WZPUBLIC;
CriticalSection::CriticalSection(void)
{
InitSpinCount();
}
CriticalSection::~CriticalSection(void)
{
::DeleteCriticalSection(&m_cs);
}
BOOL CriticalSection::InitSpinCount(DWORD dwSpinCount)
{
return ::InitializeCriticalSectionAndSpinCount(&m_cs, dwSpinCount);
}
void CriticalSection::Init(void)
{
return ::InitializeCriticalSection(&m_cs);
}
DWORD CriticalSection::SetSpinCount(DWORD dwSpinCount)
{
return ::SetCriticalSectionSpinCount(&m_cs, dwSpinCount);
}
bool CriticalSection::TryLock()
{
return (TRUE==(::TryEnterCriticalSection(&m_cs)));
}
void CriticalSection::Lock()
{
::EnterCriticalSection(&m_cs);
}
void CriticalSection::UnLock()
{
::LeaveCriticalSection(&m_cs);
}
CriticalSection::AutoLock::AutoLock(CriticalSection &cs)
:m_cs(cs)
{
m_cs.Lock();
}
CriticalSection::AutoLock::~AutoLock()
{
m_cs.UnLock();
}