std::lock_guard<std::mutex> lock(mtx);
时间: 2024-11-15 16:26:08 浏览: 6
C++11 并发指南之std::mutex详解
`std::lock_guard<std::mutex>`是一个C++智能指针,它是`std::lockable_mutex`(包括`std::mutex`、`std::recursive_mutex`等)的一种封装,用于简化对互斥锁的管理。当你在代码块开始时创建一个`lock_guard`,它会在构造时自动尝试获取指定的锁(这里是`mtx`),并在构造结束后自动释放该锁,无需显式调用`unlock()`。这样的设计使得锁的生命周期与需要锁住的代码范围一致,减少了出错的机会,特别是能防止忘记解锁的问题。
使用`lock_guard`的好处有:
- 它保证了锁在块结束时总是会被正确地释放,即便遇到异常也能做到这一点(RAII原则,Resource Acquisition Is Initialization的缩写)。
- 提高了代码的可读性和简洁度,因为无需显示地`lock`和`unlock`,降低了出错的可能性。
例如:
```cpp
std::mutex mtx;
std::lock_guard<std::mutex> lock(mtx);
// 在这里,代码是安全地并发访问共享资源
```
阅读全文