// header class Locker { CRITICAL_SECTION m_hCriticalSection; public: Locker(void); ~Locker(void); void Lock(); void Unloak(); }; class AutoLock { Locker* m_pLock; public: AutoLock(Locker& locker) { m_pLock = &locker; m_pLock->Lock(); } AutoLock(Locker* locker) { m_pLock = locker; m_pLock->Lock(); } ~AutoLock(void) { m_pLock->Unloak(); } }; // cpp Locker::Locker(void) { InitializeCriticalSection(&m_hCriticalSection); } Locker::~Locker(void) { DeleteCriticalSection(&m_hCriticalSection); } void Locker::Lock() { EnterCriticalSection(&m_hCriticalSection); } void Locker::Unloak() { LeaveCriticalSection(&m_hCriticalSection); }
Windows 临界区简单封装,没有TryLock
最新推荐文章于 2024-10-11 17:24:55 发布