07/03/04 04:38:29
>>255
class CriticalSection
{
CRITICAL_SECTION csect;
public:
CriticalSection() { InitializeCriticalSection(&csect); }
~CriticalSection() { DeleteCriticalSection(&csect); }
void Lock() { EnterCriticalSection(&csect); }
void Unlock() { LeaveCriticalSection(&csect); }
operator LPCRITICAL_SECTION() { return &csect; }
};
class Lock
{
CriticalSection& save_cs;
public:
Lock(CriticalSection& cs) : save_cs(cs) { save_cs.Lock(); };
~Lock() { save_cs.Unlock(); }
};