56 lines
893 B
C++
56 lines
893 B
C++
#ifndef __CS_H
|
|
#define __CS_H
|
|
|
|
//------------------------
|
|
//
|
|
// class CCriticalSection
|
|
//
|
|
class CCriticalSection
|
|
{
|
|
friend class CS;
|
|
friend class ConditionalCS;
|
|
|
|
public:
|
|
CCriticalSection(){InitializeCriticalSection(&_cs);}
|
|
~CCriticalSection(){DeleteCriticalSection(&_cs);}
|
|
void Enter() {EnterCriticalSection(&_cs);}
|
|
void Leave() {LeaveCriticalSection(&_cs);}
|
|
|
|
private:
|
|
void Lock() { Enter(); }
|
|
void Unlock() { Leave(); }
|
|
|
|
private:
|
|
CRITICAL_SECTION _cs;
|
|
};
|
|
|
|
|
|
//------------------------
|
|
//
|
|
// class CS
|
|
//
|
|
class CS {
|
|
CCriticalSection* m_lock;
|
|
|
|
public:
|
|
CS(CCriticalSection& lock);
|
|
~CS();
|
|
};
|
|
|
|
//- implementation -------
|
|
//
|
|
// class CS
|
|
//
|
|
inline CS::CS(CCriticalSection& lock) :
|
|
m_lock(&lock)
|
|
{
|
|
m_lock->Lock();
|
|
}
|
|
|
|
inline CS::~CS()
|
|
{
|
|
m_lock->Unlock();
|
|
}
|
|
|
|
|
|
#endif // _CS_H
|