- #include <windows.h>
- class InterLock
- {
- public:
- InterLock()
- {
- InitializeCriticalSection(&cs_);
- }
- ~InterLock()
- {
- DeleteCriticalSection(&cs_);
- }
- void enter()
- {
- EnterCriticalSection(&cs_);
- }
- void leave()
- {
- LeaveCriticalSection(&cs_);
- }
- private:
- CRITICAL_SECTION cs_;
- };
- template <typename LockType>
- class AutoLock
- {
- public:
- AutoLock(LockType& lock) : lock_(lock)
- {
- lock_.enter();
- }
- ~AutoLock()
- {
- lock_.leave();
- }
- private:
- LockType& lock_;
- };
- 现在当某个函数需要同步时,就可以在其初加上:
- InterLock lock_; AutoLock<InterLock> lock(lock_);
- 这样就会调用构造函数,从而加锁,而函数结束后,会自动调用析构函数,从而释放锁。
C++中定义一个函数结束后自动释放的锁
最新推荐文章于 2024-09-23 11:19:11 发布