lock_guard类位于mutex头文件下,使用前需要包含如下语句:
#include<mutex>
using namespace std;
std::lock_guard类采用RAII手法管理某个锁对象,启动能是在对象构造时将mutex加锁,无需手动调用lock()方法,析构时对mutex解锁,这样保证在异常的情况下mutex可以在lock_guard对象析构时被解锁,不会阻塞其它线程获取mutex.
lock_guard最大的特点就是安全易于使用,通过lock_guard对象管理的mutex哪怕异常抛出的时候也可以正确的解锁。
例如如下代码,我们使用原生mutex, 线程A当i==3时,抛出异常,此时A处于异常,mutex没有被解锁,B线程死锁无法执行,程序被阻塞卡死。