多线程实现冒泡程序C++
时间: 2024-03-25 18:41:53 浏览: 95
以下是使用多线程实现冒泡排序的 C++ 代码示例:
```c++
#include <iostream>
#include <thread>
#include <chrono>
#include <random>
#define ARRAY_SIZE 10
using namespace std;
int arr[ARRAY_SIZE];
void bubble_sort(int start, int end)
{
for (int i = start; i < end; i++)
{
for (int j = start; j < end - i - 1; j++)
{
if (arr[j] > arr[j + 1])
{
swap(arr[j], arr[j + 1]);
}
}
}
}
int main()
{
// 初始化数组
random_device rd;
mt19937 gen(rd());
uniform_int_distribution<int> dis(1, 100);
for (int i = 0; i < ARRAY_SIZE; i++)
{
arr[i] = dis(gen);
}
// 创建线程
thread t1(bubble_sort, 0, ARRAY_SIZE / 2);
thread t2(bubble_sort, ARRAY_SIZE / 2, ARRAY_SIZE);
// 等待线程结束
t1.join();
t2.join();
// 输出排序结果
for (int i = 0; i < ARRAY_SIZE; i++)
{
cout << arr[i] << " ";
}
cout << endl;
return 0;
}
```
在上面的示例中,使用了两个线程来执行 bubble_sort 函数,每个线程处理数组的一半。在 main 函数中,创建了两个线程并等待它们结束。最后,输出排序结果。需要注意的是,在多线程并发执行时,需要注意对共享资源的访问。如果多个线程同时访问同一个共享资源,可能会引发不可预期的错误。如果需要访问共享资源,需要使用同步机制来保护共享资源。
阅读全文