std::lock_guard 是什么
时间: 2024-06-13 12:07:58 浏览: 72
C++11 std::shared_ptr总结与使用示例代码详解
`std::lock_guard`是C++11中的一个RAII(Resource Acquisition Is Initialization)类,用于管理互斥锁的加锁和解锁。它的作用是在构造函数中获取互斥锁,在析构函数中释放互斥锁,从而保证了互斥锁的正确使用。使用`std::lock_guard`可以避免手动加锁和解锁的繁琐操作,同时也可以避免由于异常等原因导致锁未被正确释放的问题。
以下是一个使用`std::lock_guard`的例子:
```c++
#include <iostream>
#include <thread>
#include <mutex>
std::mutex mtx;
void someOp(){
std::lock_guard<std::mutex> lock(mtx); // 加锁
// 执行你的操作,这块是临界区
std::cout << "Hello from thread " << std::this_thread::get_id() << std::endl;} // 出了作用域,自动释放锁mtx
int main(){
std::thread t1(someOp);
std::thread t2(someOp);
t1.join();
t2.join();
return 0;
}
```
上述代码中,`std::lock_guard`在`someOp()`函数中被用来管理互斥锁`mtx`的加锁和解锁。在`someOp()`函数中,`std::lock_guard`的构造函数会自动获取互斥锁`mtx`,而在`someOp()`函数结束时,`std::lock_guard`的析构函数会自动释放互斥锁`mtx`。这样,我们就可以避免手动加锁和解锁的繁琐操作,同时也可以避免由于异常等原因导致锁未被正确释放的问题。
阅读全文