006
16.04.2015, 20:32 Uhr
~koxp
Gast
|
Jz bin ich mal ziemlich voran gekommen habe aber noch ein Problem.
Ich hab das Gefühl das meine Threads nicht gleichzeitig laufen . Wenn ich das PRogramm compiliere funktioniert es und es läuft auch aus, aber threads sind ja dazu da , damit die aufgerufene Fuktion gleichzeitig läuft . das tut sie aber nicht ?
C++: |
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <pthread.h> #include <time.h>
int count = 0; int pcount[100]; int primecount = 0;
struct sthread { int min; int max; }; struct sthread starray[1000];
void *primefun (void *x) { int y = (int) x; int end = starray[y].max; int start = starray[y].min; int i; count = 0; printf("Worker %d : Ready for Service\n", y); printf("Starting Calculation from %d to %d\n", start, end); for ( start; start <= end ; start++) { for ( i =2 ; i <= start; i++) { if ( start%i == 0) break; } if(i == start) { count++; primecount++; } } printf("Worker %d : found %d primes\n ", y , count);
pthread_exit (NULL); }
int main(int argc, char **argv) { int j = 0; int helfer ; int tzahl = 0; int grenze = 10; int anfang = 2; int tid; pthread_t th[1000]; for( tzahl = 0; tzahl < 4; tzahl++) { starray[j].max = (tzahl + 1) * (250000/4); starray[j].min = (tzahl * (250000/4)) + 1; while (j < 4 ) { pthread_create(&th[j], NULL , primefun , j); pthread_join (th[j], NULL); j++; break; } } printf("\n%d Total primes found\n", primecount); return 0 ; }
|
was habe ich da falsch gemacht? Dieser Post wurde am 17.04.2015 um 10:18 Uhr von FloSoft editiert. |