unique_lock的作用域如何定义的
时间: 2024-06-12 09:09:43 浏览: 44
C++11多线程加锁方式.doc
unique_lock的作用域是在定义时指定的。我们可以在大括号内指定作用域,也可以在函数内定义作用域。 unique_lock对象在作用域结束时会自动释放锁。下面是两个示例:
1. 在大括号内定义作用域:
```cpp
{
std::mutex mtx;
{
std::unique_lock<std::mutex> lock(mtx); // 定义unique_lock对象并锁定互斥量
// 在此处执行需要保护的代码块
} // 在此处作用域结束,unique_lock对象的析构函数会自动释放锁
// 此处不再持有互斥量的锁,可以安全地执行其他操作
}
```
2. 在函数内定义作用域:
```cpp
void foo()
{
std::mutex mtx;
{
std::unique_lock<std::mutex> lock(mtx); // 定义unique_lock对象并锁定互斥量
// 在此处执行需要保护的代码块
} // 在此处作用域结束,unique_lock对象的析构函数会自动释放锁
// 此处不再持有互斥量的锁,可以安全地执行其他操作
}
```
阅读全文