c++ 互斥锁示例demo
时间: 2023-07-19 16:45:47 浏览: 93
互斥锁演示
互斥锁是C++中保证多线程数据访问安全的常用工具。下面是一个简单的使用互斥锁的示例:
```c++
#include <iostream>
#include <thread>
#include <mutex>
std::mutex mtx; // 定义互斥锁
int counter = 0;
void increment_counter() {
for (int i = 0; i < 1000000; ++i) {
mtx.lock(); // 上锁
counter++; // 计数器递增
mtx.unlock(); // 解锁
}
}
int main() {
std::thread t1(increment_counter);
std::thread t2(increment_counter);
t1.join();
t2.join();
std::cout << "Counter value: " << counter << std::endl;
return 0;
}
```
在上面的代码中,我们首先定义了一个`std::mutex`类型的互斥锁`mtx`。在`increment_counter`函数中,我们使用`mtx.lock()`来上锁,以确保计数器的递增操作在同一时间只能被一个线程执行。然后我们使用`mtx.unlock()`来解锁,以允许其他线程访问计数器。
在`main`函数中,我们启动了两个线程并分别执行`increment_counter`函数。最后我们打印出计数器的值,以检查是否正确地执行了递增操作。
需要注意的是,互斥锁虽然能够确保多线程数据访问安全,但是过度使用互斥锁也可能会导致性能下降。因此,在实际开发中,需要根据具体情况选择适当的同步机制。
阅读全文