1 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
6 # define _MULTITHREAD_H
16 virtual void acquire() = 0;
18 virtual void acquire(int ) { acquire(); }
20 virtual void release() = 0;
25 class CriticalSection : public SyncObject
27 CRITICAL_SECTION m_cs; ///
31 CriticalSection() { InitializeCriticalSection(&m_cs); }
33 ~CriticalSection() { DeleteCriticalSection(&m_cs); }
35 void acquire() { EnterCriticalSection(&m_cs); }
37 void release() { LeaveCriticalSection(&m_cs); }
48 Acquire(SyncObject *i_so) : m_so(i_so) { m_so->acquire(); }
50 Acquire(SyncObject *i_so, int i_n) : m_so(i_so) { m_so->acquire(i_n); }
52 ~Acquire() { m_so->release(); }
56 #endif // !_MULTITHREAD_H