Advertisement
Guest User

Untitled

a guest
Jan 17th, 2018
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.47 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <pthread.h>
  3. #include <stdlib.h>
  4. #include <unistd.h>
  5. #include <sys/types.h>
  6. #include <math.h>
  7.  
  8.  
  9. //funkcja liczaca sinus i wypisujaca swoj identyfikator
  10. void *obliczenia(void *arg){
  11.     int* argument = (int*)arg;//konwersja na int
  12.     float radiany;
  13.     float f;
  14.     printf("\nIdentyfikator watku: %p\n", pthread_self()); //wypisywany jest id watku
  15.     radiany = (*argument)*(3.14/180);
  16.     printf("Przeliczanie stopni na radiany\n");
  17.     printf("%d * (3.14/180) = %f\n", *argument, radiany);
  18.     printf("Obliczanie sinusa\n");
  19.     printf("sinus(%d) = %f \n\n", *argument, sin(radiany));
  20.     f = sin(radiany);
  21.     pthread_exit ((void *)&f);
  22. }
  23.  
  24. int main(int argc, char **argv){
  25.    
  26.     int i; //iterator do peti
  27.     int j = 0; // zmienna na argument funkcji
  28.     pthread_t* watki;//tablica na wtki potrzebne do obliczen
  29.     void *status;//tablica wynikow
  30.     int* wartosci;
  31.     if(argc<2){
  32.         printf("Za malo parametrow wykonania\n");
  33.         exit(EXIT_FAILURE);
  34.     }
  35.    
  36.     watki = malloc((argc-1)*sizeof(pthread_t)); //alokowanie pamieci dla potrzebnych watkow
  37.     status = malloc(sizeof(void*));
  38.     wartosci = malloc((argc-1)*sizeof(int*));
  39.     for(i=1;i<argc;i++){
  40.         j = atoi(argv[i]);
  41.         wartosci[i-1] = j;
  42.     }
  43.     for(i=1; i<argc; i++){
  44.         pthread_create(&watki[i-1],NULL,obliczenia,&wartosci[i-1]);
  45.     }
  46.    
  47.     for(i=1; i<argc;i++){
  48.         pthread_join(watki[i-1],&status);
  49.     }
  50.     printf("Otrzymane wyniki: ");
  51.    
  52.     for(i=0;i<argc-1;i++){
  53.         printf( " %f",(*(float *)status));
  54.     }
  55.     printf("\n\n");
  56.     return 0;
  57. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement