话不多少,先上代码:
template<class _Mutex>
class LockGuard {
public:
explicit LockGuard(_Mutex& _Mtx)
: _MyMutex(_Mtx) {
// construct and lock
_MyMutex.lock();
}
~LockGuard() {
// unlock
_MyMutex.unlock();
}
private:
_Mutex& _MyMutex;
LockGuard(const LockGuard&);
LockGuard& operator=(const LockGuard&) ;
};
其实原理很简单,就是利用的局部变量在函数体中执行完后自动释放的特性。作用域范围:在函数体中定义的位置~函数体结束