0
私は、ユーザ= (n)
から数字を受け取り、1からnの合計を計算するスレッドを作成するプログラムを持っています。私は((n+1)*n)/2
が私に同じ結果を与えることを知っています。プログラムを実行するとスレッドが作成されますが、'TotalSum'
の値を要求すると、ユーザー入力に基づく計算の代わりに0が与えられます。なぜですか?私のpthreadの機能に誤りがあります
# include <stdio.h>
# include <pthread.h>
void * thread_calc(void *);
int TotalSum=0;
int main()
{
int iNumber,iCount;
pthread_t tid, tid2;
printf("Enter Number Up to Which You want to Sum :");
scanf("%d",&iNumber);
pthread_create(&tid,NULL,thread_calc,(void *) iNumber);
//pthread_create(&tid2,NULL,thread_calc,(void *)(iNumber+);
printf("Thread %d running, Final Sum is : %d \n", tid,TotalSum);
//printf("Thread %d running, Final Sum is : %d \n", tid2,TotalSum);
// return 0;
}
void *thread_calc(void *num)
{
int *iNumber;
iNumber=(int*)num;
TotalSum = ((*iNumber + 1)* (*iNumber))/2;
pthread_exit(NULL);
}
マイ出力:(たとえば、ユーザーが10に入る)
Enter Number Up to Which You want to Sum :10
Thread 536937120 running, Final Sum is : 0