mahatma andi
Cadet 4th Year
- Registriert
- Jan. 2007
- Beiträge
- 97
Hallo Leute.
Ich bin gerade ein wenig am pthreads anschauen, um multithreading zu lernen in C. Dabei habe ich ein Problem in einem Program, dass für die Zahlen von 0 bis 99 die Wurzel ausrechnen soll und für jede Rechnung einen eigenen Thread starten soll.
Mein Code sieht so aus:
beim compilieren mit gcc -g -pthread dateiname.c -lm -o dateiname gibt es mir dann den fehler aus, dass auf Zeile 38:20 (fett markiert) folgendes falsch ist:
warning: assignment makes integer from pointer without a cast
exit status sollte ja jetzt der pointer zu einem double sein, den ich von der funktion zurückbekomme, aber als void. Dann müsste ich ja den pointer zu einem pointer zu double casten, da dieser als void zurückgegeben wird ... wie mach ich das dann?
gruss, mahatma
Ich bin gerade ein wenig am pthreads anschauen, um multithreading zu lernen in C. Dabei habe ich ein Problem in einem Program, dass für die Zahlen von 0 bis 99 die Wurzel ausrechnen soll und für jede Rechnung einen eigenen Thread starten soll.
Mein Code sieht so aus:
Code:
#include<stdio.h>
#include<stdlib.h>
#include<pthread.h>
#include<math.h>
#define NUMTHREADS 100
void *function( void *number){
long newnumber;
newnumber=(long) number;
double *result;
result=(double*) malloc(sizeof(double));
printf("the squareroot of %ld is being calculated\n", newnumber);
*result=(double)sqrt((double)newnumber);
return result;
}
int main(){
pthread_t threads[NUMTHREADS];
long number;
long result[NUMTHREADS];
void *exit_status[NUMTHREADS];
int rc;
for(number=0;number<NUMTHREADS;number++){
rc=pthread_create(&threads[number],NULL, function, (void*) number);
if(rc){
printf("there's been an error in creating thread %ld",number);
return 0;
}
pthread_join(threads[number],&exit_status[number]);
}
for(number=0;number<NUMTHREADS;number++){
[B]result[number]=(long)exit_status[number];[/B]
printf("the squareroot of %ld is %ld\n",number,result[number]);
}
return 0;
}
beim compilieren mit gcc -g -pthread dateiname.c -lm -o dateiname gibt es mir dann den fehler aus, dass auf Zeile 38:20 (fett markiert) folgendes falsch ist:
warning: assignment makes integer from pointer without a cast
exit status sollte ja jetzt der pointer zu einem double sein, den ich von der funktion zurückbekomme, aber als void. Dann müsste ich ja den pointer zu einem pointer zu double casten, da dieser als void zurückgegeben wird ... wie mach ich das dann?
gruss, mahatma