127 lines
1.6 KiB
C++
127 lines
1.6 KiB
C++
|
/*++
|
||
|
|
||
|
Copyright (c) 1998-1999 Microsoft Corporation
|
||
|
All rights reserved.
|
||
|
|
||
|
Module Name:
|
||
|
|
||
|
dbgcs.cxx
|
||
|
|
||
|
Abstract:
|
||
|
|
||
|
Critical Section class
|
||
|
|
||
|
Author:
|
||
|
|
||
|
Steve Kiraly (SteveKi) 30-Mar-1997
|
||
|
|
||
|
Revision History:
|
||
|
|
||
|
--*/
|
||
|
#include "precomp.hxx"
|
||
|
#pragma hdrstop
|
||
|
|
||
|
#include "dbgcs.hxx"
|
||
|
|
||
|
TDebugCriticalSection::
|
||
|
TDebugCriticalSection(
|
||
|
VOID
|
||
|
) : m_bValid( FALSE )
|
||
|
{
|
||
|
Initialize();
|
||
|
}
|
||
|
|
||
|
TDebugCriticalSection::
|
||
|
~TDebugCriticalSection(
|
||
|
VOID
|
||
|
)
|
||
|
{
|
||
|
Release();
|
||
|
}
|
||
|
|
||
|
BOOL
|
||
|
TDebugCriticalSection::
|
||
|
bValid(
|
||
|
VOID
|
||
|
) const
|
||
|
{
|
||
|
return m_bValid;
|
||
|
}
|
||
|
|
||
|
VOID
|
||
|
TDebugCriticalSection::
|
||
|
Enter(
|
||
|
VOID
|
||
|
)
|
||
|
{
|
||
|
EnterCriticalSection( &m_CriticalSection );
|
||
|
}
|
||
|
|
||
|
VOID
|
||
|
TDebugCriticalSection::
|
||
|
Leave(
|
||
|
VOID
|
||
|
)
|
||
|
{
|
||
|
LeaveCriticalSection( &m_CriticalSection );
|
||
|
}
|
||
|
|
||
|
VOID
|
||
|
TDebugCriticalSection::
|
||
|
Initialize(
|
||
|
VOID
|
||
|
)
|
||
|
{
|
||
|
if (!m_bValid)
|
||
|
{
|
||
|
InitializeCriticalSection( &m_CriticalSection );
|
||
|
m_bValid = TRUE;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
VOID
|
||
|
TDebugCriticalSection::
|
||
|
Release(
|
||
|
VOID
|
||
|
)
|
||
|
{
|
||
|
if (m_bValid)
|
||
|
{
|
||
|
DeleteCriticalSection( &m_CriticalSection );
|
||
|
m_bValid = FALSE;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
TDebugCriticalSection::TLock::
|
||
|
TLock(
|
||
|
TDebugCriticalSection &CriticalSection
|
||
|
) : m_CriticalSection( CriticalSection )
|
||
|
{
|
||
|
m_CriticalSection.Enter();
|
||
|
}
|
||
|
|
||
|
TDebugCriticalSection::TLock::
|
||
|
~TLock(
|
||
|
VOID
|
||
|
)
|
||
|
{
|
||
|
m_CriticalSection.Leave();
|
||
|
}
|
||
|
|
||
|
TDebugCriticalSection::TUnLock::
|
||
|
TUnLock(
|
||
|
TDebugCriticalSection &CriticalSection
|
||
|
) : m_CriticalSection( CriticalSection )
|
||
|
{
|
||
|
m_CriticalSection.Leave();
|
||
|
}
|
||
|
|
||
|
TDebugCriticalSection::TUnLock::
|
||
|
~TUnLock(
|
||
|
VOID
|
||
|
)
|
||
|
{
|
||
|
m_CriticalSection.Enter();
|
||
|
}
|
||
|
|