40 lines
608 B
C
40 lines
608 B
C
|
#pragma once
|
||
|
|
||
|
//
|
||
|
// This is a generic class that wraps a given CComAutoCriticalSection
|
||
|
//
|
||
|
class CScopeCriticalSection
|
||
|
{
|
||
|
|
||
|
private:
|
||
|
CComAutoCriticalSection* m_pCriticalSection;
|
||
|
|
||
|
public:
|
||
|
CScopeCriticalSection(CComAutoCriticalSection* pNewCS) :
|
||
|
m_pCriticalSection(pNewCS)
|
||
|
{
|
||
|
Lock();
|
||
|
}
|
||
|
|
||
|
~CScopeCriticalSection()
|
||
|
{
|
||
|
Unlock();
|
||
|
}
|
||
|
|
||
|
void
|
||
|
inline Lock()
|
||
|
{
|
||
|
m_pCriticalSection->Lock();
|
||
|
}
|
||
|
|
||
|
|
||
|
void
|
||
|
inline Unlock()
|
||
|
{
|
||
|
m_pCriticalSection->Unlock();
|
||
|
}
|
||
|
|
||
|
};
|
||
|
|
||
|
|
||
|
#define ENTER_AUTO_CS CScopeCriticalSection _ScopeAutoCriticalSection(&m_AutoCS);
|