• 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;
    	};
    

      

  • 相关阅读:
    beego——过滤器
    beego——session控制
    Differentiation 导数和变化率
    验证码识别
    pip 下载慢
    ORB
    决策树
    机器学习第二章 配对网站
    K-近邻算法
    ubuntu下安装配置OpenCV
  • 原文地址:https://www.cnblogs.com/zyb993963526/p/16155524.html
Copyright © 2020-2023  润新知