- 主线程创建10个子线程
- 第0个子线程计算从01加到10的和 - 第1个子线程计算从11加到20的和
- …
- 第9个子线程计算从91加到100的和 2. 主线程归并10个子线程的计算结果,最终结果为5050
- 本题必须使用线程参数来完成
#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>
#include<pthread.h>
typedef struct{
int start;
int end;
int sum;
}param;
void *worker(void *arg){
param *p=arg;
p->sum=0;
int i;
for(i=p->start;i<p->end;i++)
p->sum+=i;
return NULL;
}
int main(){
param p[10];
pthread_t pid[10];
int i;
int sum=0;
for(i=0;i<10;i++){
p[i].start=i*10+1;
p[i].end=p[i].start+10;
pthread_create(&pid[i],NULL,worker,p+i);
}
for(i=0;i<10;i++)
pthread_join(pid[i],NULL);
for(i=0;i<10;i++)
sum+=p[i].sum;
printf("%d\n",sum);
return 0;
}