// 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
最新推荐文章于 2023-09-06 15:01:06 发布
本文介绍了一种使用C++实现的互斥锁(Locker)类及自动锁定(AutoLock)类,通过Critical Section来确保线程安全。 Locker类负责锁定和解锁,而AutoLock类作为RAII风格的资源管理类,在构造时锁定资源,在析构时自动释放锁。

1408

被折叠的 条评论
为什么被折叠?



