Ich habe dieses Programm, das nach Benutzereingabe fragt, um eine Zahl zu geben, um die Summe von 1 bis n (n ist die Benutzereingabezahl) zu berechnen . Ich versuche herauszufinden, wie ich einen zweiten Thread berechnen könnte 1 bis n + 1, einen dritten Thread, um 1 bis n + 2 und so weiter zu berechnen.Ich möchte mehr Threads erstellen, um die Summe einer vom Benutzer angegebenen Eingabe zu berechnen
# include <stdio.h>
# include <pthread.h>
void * thread_sum(void *);
int TotalSum=0;
pthread_mutex_t mVar=PTHREAD_MUTEX_INITIALIZER;
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_sum,(void *)&iNumber);
pthread_create(&tid2,NULL,thread_sum,(void *)&iNumber);
for(iCount=1;iCount<=iNumber;iCount=iCount+2)
{
pthread_mutex_lock(&mVar);
TotalSum=TotalSum + iCount;
pthread_mutex_unlock(&mVar);
}
pthread_join(tid,NULL);
printf("Thread %d running, Final Sum is : %d \n", tid,TotalSum);
}
void *thread_sum(void *no)
{
int *iNumber,iCount, res;
iNumber=(int*)no;
for(iCount=2;iCount<=*iNumber;iCount=iCount+2)
{
pthread_mutex_lock(&mVar);
TotalSum=TotalSum + iCount;
pthread_mutex_unlock(&mVar);
}
pthread_exit(NULL);
}
Sie erkennen, dass die Summe von '[1..n]' ist '((n + 1) * n)/2' – selbie
Ist dies eine ernsthafte Verwendung von Threads oder ein "Spielzeug" -Beispiel? – duskwuff
@duskwuff ein Spielzeug-Beispiel –