在Linux虚拟机中,用C语言实现多线程1+2+..+100000
时间: 2024-05-09 09:20:52 浏览: 7
以下是一个使用C语言实现多线程计算1至100000的示例代码:
```c
#include <stdio.h>
#include <pthread.h>
// 线程数量
#define THREAD_NUM 10
// 每个线程计算的数的个数
#define COUNT_PER_THREAD 10000
// 所有线程计算的总数
#define TOTAL_COUNT (THREAD_NUM * COUNT_PER_THREAD)
// 存储计算结果的数组
int result[TOTAL_COUNT];
// 线程函数,计算从start开始的COUNT_PER_THREAD个数的和
void *thread_func(void *arg) {
int start = *(int *)arg;
for (int i = start; i < start + COUNT_PER_THREAD; i++) {
result[i] = i + 1;
}
return NULL;
}
int main() {
pthread_t threads[THREAD_NUM];
int args[THREAD_NUM];
// 创建线程
for (int i = 0; i < THREAD_NUM; i++) {
args[i] = i * COUNT_PER_THREAD;
pthread_create(&threads[i], NULL, thread_func, &args[i]);
}
// 等待线程结束
for (int i = 0; i < THREAD_NUM; i++) {
pthread_join(threads[i], NULL);
}
// 计算结果
int sum = 0;
for (int i = 0; i < TOTAL_COUNT; i++) {
sum += result[i];
}
printf("1 + 2 + ... + 100000 = %d\n", sum);
return 0;
}
```
该代码使用了10个线程,每个线程计算10000个数的和,最终将所有线程计算的结果累加得到最终的结果。在主函数中,首先创建10个线程,每个线程计算一部分数的和。然后等待所有线程结束,并将所有线程计算的结果相加得到最终的结果。