Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <pthread.h>
- #include <stdlib.h>
- #include <unistd.h>
- #include <sys/types.h>
- #include <math.h>
- //funkcja liczaca sinus i wypisujaca swoj identyfikator
- void *obliczenia(void *arg){
- int* argument = (int*)arg;//konwersja na int
- float radiany;
- float f;
- printf("\nIdentyfikator watku: %p\n", pthread_self()); //wypisywany jest id watku
- radiany = (*argument)*(3.14/180);
- printf("Przeliczanie stopni na radiany\n");
- printf("%d * (3.14/180) = %f\n", *argument, radiany);
- printf("Obliczanie sinusa\n");
- printf("sinus(%d) = %f \n\n", *argument, sin(radiany));
- f = sin(radiany);
- pthread_exit ((void *)&f);
- }
- int main(int argc, char **argv){
- int i; //iterator do peti
- int j = 0; // zmienna na argument funkcji
- pthread_t* watki;//tablica na wtki potrzebne do obliczen
- void *status;//tablica wynikow
- int* wartosci;
- if(argc<2){
- printf("Za malo parametrow wykonania\n");
- exit(EXIT_FAILURE);
- }
- watki = malloc((argc-1)*sizeof(pthread_t)); //alokowanie pamieci dla potrzebnych watkow
- status = malloc(sizeof(void*));
- wartosci = malloc((argc-1)*sizeof(int*));
- for(i=1;i<argc;i++){
- j = atoi(argv[i]);
- wartosci[i-1] = j;
- }
- for(i=1; i<argc; i++){
- pthread_create(&watki[i-1],NULL,obliczenia,&wartosci[i-1]);
- }
- for(i=1; i<argc;i++){
- pthread_join(watki[i-1],&status);
- }
- printf("Otrzymane wyniki: ");
- for(i=0;i<argc-1;i++){
- printf( " %f",(*(float *)status));
- }
- printf("\n\n");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement