62 lines
926 B
C++
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();
|
|
} |