std::lock_guard类是一个包装类,通过锁类可以更好的获得和释放一个互斥体上的锁;锁类的析构函数会自动释放关联的互斥体。
标准定义的两种类型的锁
- std::lock_guard
- std::unique_guard
<1> std::lock_guard
lock_guard 对象通常用于管理某个锁(Lock)对象,因此与 Mutex RAII 相关,方便线程对互斥量上锁,即在某个 lock_guard 对象的声明周期内,它所管理的锁对象会一直保持上锁状态;而 lock_guard 的
生命 周期结束之后,
它所管理的锁对象会被解锁(注:类似 shared_ptr 等智能指针管理动态分配的内 存资源 )。
lock_guard 对象并不负责管理 Mutex 对象的生命周期,lock_guard 对象只是简化了 Mutex 对象的上锁和解锁操作,方便线程对互斥量上锁,即在某个 lock_guard 对象声明周期内,它所管理的锁对
象会一直保持上锁状态&