lock_guard
时间: 2023-06-22 21:25:29 浏览: 98
lock
lock_guard是C++11标准中的一个RAII(资源获取即初始化)封装类,用于保护临界区。它的主要作用是防止多个线程同时访问共享数据时发生竞态条件。
使用lock_guard时需要传入一个互斥量作为参数,它会在构造函数中锁定互斥量,在析构函数中释放互斥量。这样可以确保在程序执行过程中,只有一个线程可以访问临界区,其他线程需要等待锁被释放后才能进入临界区。
lock_guard的使用方式类似于下面的代码:
```c++
std::mutex mtx;
{
std::lock_guard<std::mutex> lock(mtx);
// 临界区
}
```
在上面的代码中,lock_guard对象会在进入作用域时自动锁定互斥量mtx,当离开作用域时自动释放互斥量mtx,从而保护了临界区。
阅读全文