#pragma once #define autolock(cs) WZPUBLIC::CriticalSection::AutoLock lock(cs); #include "Windows.h" namespace WZPUBLIC { class CriticalSection { public: CriticalSection(); virtual ~CriticalSection(); class AutoLock; public: //½ºÇÉ Ä«¿îÆ®¸¦ º¯°æÇÑ´Ù. DWORD SetSpinCount(DWORD dwSpinCount = 2000); bool TryLock(); void Lock(); void UnLock(); protected: //µ¿±âÈ­ °´Ã¼¸¦ ÃʱâÈ­ ÇÑ´Ù. BOOL InitSpinCount(DWORD dwSpinCount=2000); void Init(void); private: CRITICAL_SECTION m_cs; CriticalSection(const CriticalSection &rhs); CriticalSection &operator=(const CriticalSection &rhs); }; class CriticalSection::AutoLock { public: AutoLock(CriticalSection &crit); ~AutoLock(); private : CriticalSection &m_cs; // No copies do not implement AutoLock(const AutoLock &rhs); AutoLock &operator=(const AutoLock &rhs); }; };