多线程并发冒泡linux代码
时间: 2024-09-29 21:00:28 浏览: 22
在Linux环境下编写多线程并发冒泡排序算法的代码通常是为了展示如何利用多线程提高程序性能。这里是一个简单的示例,使用了`pthread`库来创建并管理线程:
```c
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
#define MAX 100
int arr[MAX];
int length;
// 冒泡排序函数
void bubble_sort(int start, int end) {
for (int i = start; i < end - 1; ++i) {
for (int j = 0; j < end - i - 1; ++j) {
if (arr[j] > arr[j + 1]) {
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
// 线程处理函数
void* thread_sort(void *thread_id) {
int thread_start = (int)thread_id;
bubble_sort(thread_start, length);
printf("Thread %d finished sorting.\n", thread_start);
return NULL;
}
int main() {
// 初始化数组...
length = MAX / 4;
for (int i = 0; i < length; ++i)
arr[i] = rand() % MAX;
// 创建线程数量等于元素数量的一半
int num_threads = length / 2;
pthread_t threads[num_threads];
// 分配任务给每个线程
for (int i = 0; i < num_threads; ++i) {
pthread_create(&threads[i], NULL, &thread_sort, (void*)i);
}
// 等待所有线程完成
for (int i = 0; i < num_threads; ++i)
pthread_join(threads[i], NULL);
printf("Array after sorting:\n");
for (int i = 0; i < length; ++i)
printf("%d ", arr[i]);
return 0;
}
阅读全文