C++源码—lock_guard
作者:互联网
在 C++11 中,我们可以使用 mutex 来实现线程的同步,mutex 包括上锁和解锁两个步骤。
lock_guard 的功能也是实现线程同步,可以进一步偷懒以及避免在锁定期间可能出现异常的情况,它的思想就是 RAII,在构造对象时就完成上锁的操作,当对象离开作用域时自动调用析构函数解锁。
template<class _Mutex> class lock_guard { // class with destructor that unlocks a mutex public: using mutex_type = _Mutex; explicit lock_guard(_Mutex& _Mtx) : _MyMutex(_Mtx) { // construct and lock _MyMutex.lock(); } lock_guard(_Mutex& _Mtx, adopt_lock_t) : _MyMutex(_Mtx) { // construct but don't lock } ~lock_guard() noexcept { // unlock _MyMutex.unlock(); } lock_guard(const lock_guard&) = delete; lock_guard& operator=(const lock_guard&) = delete; private: _Mutex& _MyMutex; };
标签:Mtx,MyMutex,lock,guard,源码,mutex,Mutex 来源: https://www.cnblogs.com/zyb993963526/p/16155524.html