std::lock_guard<std::mutex>作用域
时间: 2024-01-22 19:04:22 浏览: 35
std::lock_guard<std::mutex>是C++中的一个RAII(资源获取即初始化)类模板,用于管理互斥量的锁定和解锁。它的作用是在其作用域结束时自动释放互斥量的锁。
使用std::lock_guard<std::mutex>可以确保在离开作用域时,互斥量一定会被正确地解锁,从而避免了忘记解锁的问题。
面是一个示例代码,演示了std::lock_guard<std::mutex>的作用域:
```cpp
#include <iostream>
#include <thread>
#include <mutex>
std::mutex mtx;
void printHello()
{
std::lock_guard<std::mutex> lock(mtx); // 在函数作用域内创建std::lock_guard对象,锁定互斥量
std::cout << "Hello" << std::endl;
// 在作用域结束时,std::lock_guard对象析构,自动解锁互斥量
}
int main()
{
std::thread t1(printHello);
std::thread t2(printHello);
t1.join();
t2.join();
return 0;
}
```
在上面的示例中,我们创建了两个线程t1和t2,它们都会调用printHello函数。在printHello函数内部,我们创建了一个std::lock_guard<std::mutex>对象lock,它会在函数作用域结束时自动解锁互斥量mtx。这样,当一个线程执行完printHello函数后,另一个线程才能获取到互斥量的锁。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)