//多线程计算1^2+2^2+...+n^2
#include<stdio.h>
#include<pthread.h>
#include<stdlib.h>
int nthreads=1;
void *dowork(void *params)
{
int j= *(int *)params;
int term = (j+1)*(j+1);
*(int*)params =term;
printf("the thread[%d]:term=%d\n",j,term);
}
void main(char argc,char **argv)
{
int i;
pthread_t threads[100];
int pthread_data[100];
int sum=0;
nthreads=1;
if(argc==2)
nthreads =atoi(argv[1]); //将命令行字符串参数转化位整数
for(i=0;i<nthreads;i++)
{
pthread_data[i]=i;
pthread_create(&threads[i],NULL,dowork,&pthread_data[i]); //创建线程
}
for(i=0;i<nthreads;i++)
{
pthread_join(threads[i],NULL);
sum+=pthread_data[i];
}
printf("the Sum= %d\n",sum);
#include<stdio.h>
#include<pthread.h>
#include<stdlib.h>
int nthreads=1;
void *dowork(void *params)
{
int j= *(int *)params;
int term = (j+1)*(j+1);
*(int*)params =term;
printf("the thread[%d]:term=%d\n",j,term);
}
void main(char argc,char **argv)
{
int i;
pthread_t threads[100];
int pthread_data[100];
int sum=0;
nthreads=1;
if(argc==2)
nthreads =atoi(argv[1]); //将命令行字符串参数转化位整数
for(i=0;i<nthreads;i++)
{
pthread_data[i]=i;
pthread_create(&threads[i],NULL,dowork,&pthread_data[i]); //创建线程
}
for(i=0;i<nthreads;i++)
{
pthread_join(threads[i],NULL);
sum+=pthread_data[i];
}
printf("the Sum= %d\n",sum);
}