定义一个函数结束后自动释放的锁

#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_); 这样就会调用构造函数,从而加锁,而函数结束后,会自动调用析构函数,从而释放锁。

你可能感兴趣的:(定义一个函数结束后自动释放的锁)