12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- #ifndef __ZAutoCriticalSection_h__
- #define __ZAutoCriticalSection_h__
- /////////////////////////////////////////////////////////////////////////////
- // ZAutoCriticalSection.h | Declaration of the ZAutoCriticalSection class.
- //
- /////////////////////////////////////////////////////////////////////////////
- // ZAutoCriticalSection provides methods for obtaining and releasing
- // ownership of a Win32 critical section object. ZAutoCriticalSection
- // automatically initializes critical section objects in the constructor, and
- // automatically deletes the critical section in the destructor.
- class ZAutoCriticalSection
- {
- // Construction / Destruction
- public:
- ZAutoCriticalSection();
- ~ZAutoCriticalSection();
- // Operations
- public:
- void Lock();
- void Unlock();
- // Data Members
- protected:
- CRITICAL_SECTION m_sec; // A Win32 CRITICAL_SECTION object.
- };
- /////////////////////////////////////////////////////////////////////////////
- // Group=Construction / Destruction
- /////////////////////////////////////////////////////////////////////////////
- // Description: Constructor.
- //
- // The constructor. Calls the Win32 function InitializeCriticalSection,
- // which initializes the critical section object contained in the m_sec data
- // member.
- //
- // See Also: ZAutoCriticalSection::Lock, ZAutoCriticalSection::destructor
- inline ZAutoCriticalSection::ZAutoCriticalSection()
- {
- InitializeCriticalSection(&m_sec);
- }
- /////////////////////////////////////////////////////////////////////////////
- // Description: Destructor
- //
- // The destructor. calls DeleteCriticalSection, which releases all system
- // resources used by the critical section object.
- //
- // See Also: ZAutoCriticalSection::Unlock,
- // ZAutoCriticalSection::constructor
- inline ZAutoCriticalSection::~ZAutoCriticalSection()
- {
- DeleteCriticalSection(&m_sec);
- }
- /////////////////////////////////////////////////////////////////////////////
- // Group=Operations
- /////////////////////////////////////////////////////////////////////////////
- // Obtains ownership of the critical section object.
- //
- // See Also: ZAutoCriticalSection::Unlock, ZAutoCriticalSection::destructor
- inline void ZAutoCriticalSection::Lock()
- {
- EnterCriticalSection(&m_sec);
- }
- /////////////////////////////////////////////////////////////////////////////
- // Releases ownership of the critical section object.
- //
- // See Also: ZAutoCriticalSection::Lock, ZAutoCriticalSection::constructor
- inline void ZAutoCriticalSection::Unlock()
- {
- LeaveCriticalSection(&m_sec);
- }
- /////////////////////////////////////////////////////////////////////////////
- #endif // !__ZAutoCriticalSection_h__
|