Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define _REENTRANT
- #include <pthread.h>
- #include <thread.h>
- #include <math.h>
- #define NUM_THREADS 3
- void *sinus(void *_x);
- void *logarytm(void *_x);
- void *pierwiastek(void *_x);
- thread_t tid[NUM_THREADS];
- double wyniki[NUM_THREADS];
- int j = 0;
- int k = 0;
- double suma = 0;
- int main(int argc, char *argv[])
- {
- int i = 0;
- int val = atoi(argv[1]);
- pthread_create(&tid[i++], NULL,sinus,&val);
- pthread_create(&tid[i++], NULL,logarytm,&val);
- pthread_create(&tid[i++], NULL,pierwiastek,&val);
- for (i = 0; i < NUM_THREADS; i++)
- pthread_join(tid[i], NULL);
- for(i = 0; i < NUM_THREADS; i++)
- {
- suma += wyniki[i];
- }
- printf("Suma wszystkich wynikow: %lf \n", suma);
- }
- void* sinus(void *_x)
- {
- unsigned int x = *((unsigned int *) _x);
- double wartosc = sin(x);
- printf("spi %d sekund \n",tid[k]);
- sleep(tid[k++]);
- printf("wynik operacji %lf \n",wartosc);
- wyniki[j++] = wartosc;
- };
- void* logarytm(void *_x)
- {
- unsigned int x = *((unsigned int *) _x);
- double wartosc = log(x);
- printf("spi %d sekund \n",tid[k]);
- sleep(tid[k++]);
- printf("wynik operacji %lf \n",wartosc);
- wyniki[j++] = wartosc;
- };
- void* pierwiastek(void *_x)
- {
- unsigned int x = *((unsigned int *) _x);
- double wartosc = sqrt(x);
- printf("spi %d sekund \n", tid[k]);
- sleep(tid[k]);
- printf("wynik operacji %lf \n",wartosc);
- wyniki[j++] = wartosc;
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement