AutoMutex的代码是什么
时间: 2024-09-19 15:16:06 浏览: 2
AutoMutex是一个用于自动加锁和解锁的类,通常用于多线程编程中保护共享资源。以下是一个简单的AutoMutex类的实现示例:
```cpp
#include <mutex>
class AutoMutex {
public:
explicit AutoMutex(std::mutex& mutex) : m_mutex(mutex) {
m_mutex.lock();
}
~AutoMutex() {
m_mutex.unlock();
}
private:
std::mutex& m_mutex;
};
```
使用方法如下:
```cpp
#include <iostream>
#include <thread>
#include <mutex>
std::mutex mtx;
int shared_resource = 0;
void increment() {
for (int i = 0; i < 100000; ++i) {
AutoMutex lock(mtx);
++shared_resource;
}
}
int main() {
std::thread t1(increment);
std::thread t2(increment);
t1.join();
t2.join();
std::cout << "Shared resource value: " << shared_resource << std::endl;
return 0;
}
```
在这个例子中,我们创建了一个名为AutoMutex的类,它接受一个std::mutex引用作为参数。当创建一个AutoMutex对象时,它会立即锁定传入的互斥量。当AutoMutex对象超出作用域并被销毁时,它的析构函数会自动解锁互斥量。这样可以确保在临界区内的代码执行完毕后,互斥量会被正确解锁,避免了死锁和其他并发问题。