多线程操作Cpp的例子
时间: 2023-12-16 16:51:34 浏览: 28
以下是一个简单的多线程操作 C++ 的示例:
```cpp
#include <iostream>
#include <thread>
#include <mutex>
using namespace std;
mutex mtx; // 创建互斥锁
void print(int num) { // 一个打印函数
mtx.lock(); // 加锁
cout << num << endl; // 输出 num
mtx.unlock(); // 解锁
}
int main() {
thread threads[5]; // 创建 5 个线程
for (int i = 0; i < 5; ++i) {
threads[i] = thread(print, i); // 每个线程都执行 print 函数,传入不同的参数
}
for (int i = 0; i < 5; ++i) {
threads[i].join(); // 等待所有线程执行完毕
}
return 0;
}
```
这个例子中,我们首先创建一个互斥锁 `mtx`,然后创建了 5 个线程 `threads`。每个线程都执行 `print` 函数,传入不同的参数,这里是 `i`。`print` 函数中,我们首先调用 `mtx.lock()` 加锁,然后输出 `num`,最后调用 `mtx.unlock()` 解锁。这样做可以确保每个线程输出的 `num` 不会被其他线程打断。
在主函数中,我们创建了 5 个线程后,使用 `join()` 等待所有线程执行完毕。这样做可以确保在程序结束前,所有线程都已经执行完毕了。