C++中Mutex的详细用法
烈火女巫 发布于:2024-01-17 12:14:15
在C++中,Mutex(互斥锁)是一种用于保护共享资源的同步机制。它可以确保在任何给定时间只有一个线程可以访问被保护的代码块。使用Mutex需要包含头文件
下面是Mutex的详细用法示例:
- 创建一个Mutex对象:
#include
using namespace std;
mutex mtx; // 创建一个Mutex对象
2. 使用Mutex保护共享资源:
```cpp
// 线程1
void threadFunction1() {
mtx.lock(); // 获取Mutex锁
// 访问共享资源的代码块
mtx.unlock(); // 释放Mutex锁
}
// 线程2
void threadFunction2() {
mtx.lock(); // 获取Mutex锁
// 访问共享资源的代码块
mtx.unlock(); // 释放Mutex锁
}
- 使用std::lock_guard自动管理Mutex锁:
// 线程1 void threadFunction1() { lock_guard
lock(mtx); // 自动获取和释放Mutex锁 // 访问共享资源的代码块 }
// 线程2
void threadFunction2() {
lock_guard
4. 使用std::unique_lock更灵活地管理Mutex锁:
```cpp
// 线程1
void threadFunction1() {
unique_lock lock(mtx); // 手动获取Mutex锁
// 访问共享资源的代码块
lock.unlock(); // 手动释放Mutex锁
// 其他代码
lock.lock(); // 再次获取Mutex锁
// 访问共享资源的代码块
}
// 线程2
void threadFunction2() {
unique_lock lock(mtx); // 手动获取Mutex锁
// 访问共享资源的代码块
lock.unlock(); // 手动释放Mutex锁
// 其他代码
lock.lock(); // 再次获取Mutex锁
// 访问共享资源的代码块
}
这些只是Mutex的一些基本用法示例,Mutex还有其他的功能和方法,例如递归锁、条件变量等,可以根据具体需求进行使用。