c++ 互斥锁用法举例,使用std::thread
时间: 2023-05-23 10:06:34 浏览: 125
互斥锁例程
A:下面是一个使用std::thread和互斥锁的简单例子:
```cpp
#include <thread>
#include <mutex>
#include <iostream>
std::mutex mtx;
void print(int num) {
mtx.lock(); // 获取互斥锁
std::cout << "Thread " << num << " is printing." << std::endl;
mtx.unlock(); // 释放互斥锁
}
int main() {
std::thread threads[5]; // 创建5个线程
// 创建线程并启动
for (int i = 0; i < 5; ++i) {
threads[i] = std::thread(print, i + 1);
}
// 等待所有线程执行完毕
for (int i = 0; i < 5; ++i) {
threads[i].join();
}
return 0;
}
```
在上述例子中,我们创建了5个线程,并在每个线程中调用print函数。由于print函数里面的输出语句是共享资源,因此需要用互斥锁来保证每个线程访问共享资源的时候都是独占的,避免出现线程安全问题。所以我们在print函数中使用了mtx.lock()来获取互斥锁,输出完毕后再使用mtx.unlock()来释放互斥锁,确保每个线程都可以按照顺序完成自己的任务,不会发生互相干扰的情况。
阅读全文