Files
Sun1602/SUN3DEngine/include/ProgramCommon/wzcriticalsection.h
T
2022-10-26 12:25:11 +08:00

80 lines
1.5 KiB
Objective-C

// wzcriticalsection.h
#ifndef _PROGRAMCOMMON_WZCRITICALSECTION_H_
#define _PROGRAMCOMMON_WZCRITICALSECTION_H_
#ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x0500
#endif
#include "wztypedef.h"
//------------------------------------------------------------------------------
/**
@class CWzCriticalSection
*/
class CWzCriticalSection
{
public:
CWzCriticalSection( void )
{
InitializeCriticalSection( &m_csObjet );
}
~CWzCriticalSection( void )
{
EnterCriticalSection( &m_csObjet );
DeleteCriticalSection( &m_csObjet );
}
void Enter( void )
{
EnterCriticalSection( &m_csObjet );
}
void Leave( void )
{
LeaveCriticalSection( &m_csObjet );
}
private:
CRITICAL_SECTION m_csObjet;
};
//------------------------------------------------------------------------------
/**
@class CWzSync
*/
class CWzSync
{
public:
CWzSync( CWzCriticalSection* wcs )
: m_wcs( wcs )
{
WzAssert( m_wcs );
if( m_wcs )
{
m_wcs->Enter();
}
}
~CWzSync( void )
{
if( m_wcs )
{
m_wcs->Leave();
}
}
private:
CWzCriticalSection* m_wcs;
};
//------------------------------------------------------------------------------
/**
*/
#define WzDeclare_Sync( name ) CWzCriticalSection x_pcs##name
#define WzSync_This( name ) CWzSync sy##name( &x_pcs##name )
#endif // _PROGRAMCOMMON_WZCRITICALSECTION_H_