C语言多线程编程实现1+2+3+...+1000
时间: 2023-09-12 22:12:35 浏览: 99
c语言多进程多线程编程
以下是使用C语言多线程编程实现1到1000的代码:
```c
#include <stdio.h>
#include <pthread.h>
#define NUM_THREADS 10 // 线程数量
#define MAX_NUM 1000 // 最大数值
int sum = 0; // 总和
void *calculate_sum(void *thread_id) {
int tid = *((int*)thread_id); // 获取线程ID
int start = tid * (MAX_NUM / NUM_THREADS) + 1; // 计算起始数值
int end = (tid + 1) * (MAX_NUM / NUM_THREADS); // 计算结束数值
for (int i = start; i <= end; i++) {
sum += i; // 计算总和
}
pthread_exit(NULL); // 退出线程
}
int main() {
pthread_t threads[NUM_THREADS]; // 线程数组
int thread_ids[NUM_THREADS]; // 线程ID数组
for (int i = 0; i < NUM_THREADS; i++) {
thread_ids[i] = i; // 初始化线程ID数组
pthread_create(&threads[i], NULL, calculate_sum, (void*)&thread_ids[i]); // 创建线程
}
for (int i = 0; i < NUM_THREADS; i++) {
pthread_join(threads[i], NULL); // 等待线程结束
}
printf("Sum of 1 to %d is %d", MAX_NUM, sum); // 输出结果
return 0;
}
```
该程序会创建10个线程,每个线程计算1到1000之间的一部分数值的总和,最后将所有线程计算出的总和相加得到最终结果。使用pthread库中的pthread_create和pthread_join函数来创建和等待线程的结束。
阅读全文