unique_lock C++代码使用
时间: 2023-09-27 13:07:47 浏览: 212
unique_lock 是 C++ 中的一个互斥量包装器,用于实现线程同步和互斥访问。它提供了更灵活的锁定机制,使得资源的锁定和释放更加安全和方便。下面是一个使用 unique_lock 的简单示例代码:
```cpp
#include <iostream>
#include <thread>
#include <mutex>
std::mutex mtx; // 定义一个互斥量
void printMessage(const std::string& message) {
std::unique_lock<std::mutex> lock(mtx); // 使用 unique_lock 锁定互斥量
for (int i = 0; i < 5; ++i) {
std::cout << message << std::endl;
std::this_thread::sleep_for(std::chrono::milliseconds(500));
}
// unique_lock 在函数结束时会自动释放互斥量
}
int main() {
// 创建两个线程分别打印不同的消息
std::thread t1(printMessage, "Hello");
std::thread t2(printMessage, "World");
// 等待两个线程执行完毕
t1.join();
t2.join();
return 0;
}
```
在上面的示例中,我们创建了一个互斥量 `mtx`,并在 `printMessage` 函数中使用 `unique_lock` 对互斥量进行了锁定。通过锁定互斥量,我们确保了每次只有一个线程可以访问 `printMessage` 函数内部的代码块。在函数执行完毕时,`unique_lock` 会自动释放互斥量,从而允许其他线程获得锁定并执行相应的代码。
请注意,使用 `unique_lock` 可以更加灵活地控制互斥量的锁定和释放,同时还支持更多的功能和选项,例如延迟锁定、递归锁定等。这使得 `unique_lock` 成为了 C++ 中常用的线程同步工具之一。
阅读全文