Advertisement
Guest User

Untitled

a guest
Dec 6th, 2019
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.62 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <unistd.h>
  3. #include <stdio.h>
  4. #include <pthread.h>
  5. #include <errno.h>
  6. #include <stdlib.h>
  7.  
  8.  
  9. void *kwadrat(void *x){
  10. int zwracanaWartoscPrzezWatek = *((int*) x) * *((int*) x);
  11. return (void*)zwracanaWartoscPrzezWatek;
  12. }
  13.  
  14. int main(int argc, char** argv)
  15. {
  16. int wynikKoncowy = 0;
  17.  
  18. pthread_t watek[argc]; // deklarowanie watkow
  19.  
  20. void *pobranieZwatku; // przechowuje wskaznik na adres
  21.  
  22. int tab[argc]; // deklaracja tablicy w celu odczytania wartosci na standardowe wejscie
  23. int i; // zmienna sterujaca forem
  24. for(i=0 ; i<argc ; i++){
  25. tab[i] = atoi(argv[i]); // Przypisywanie argumentow do tablicy intowej
  26. }
  27.  
  28.  
  29.  
  30. for( i=1; i<argc ; i++){ // stworzenie watkow tylu ile jest argumentow
  31. if(pthread_create(&watek[i], NULL, &kwadrat, &tab[i])){
  32. printf("błąd przy tworzeniu wątku.");
  33. }; // stworzenie watkow oraz przypisania im funkcji ktora maja wykonac i przekazany element do funkcji, w przypadku nieudanej proby wyswietli nam sie powiadomienie
  34. }
  35. int w;
  36. for( i=1; i<argc ; i++){
  37. if(pthread_join(watek[i], &pobranieZwatku)){
  38. printf("błąd przy konczeniu wątku.");
  39. }; // czekanie na zakonczenie watku oraz otrzymania od niego wartosci obliczonej, w przypadku nieudanej proby wyswietli nam sie powiadomienie
  40.  
  41. wynikKoncowy += (int)pobranieZwatku; // obliczanie sumy
  42. printf("%d:%ld:%d:%s:%d\n",i, watek[i] ,getpid(), argv[i], (int)pobranieZwatku);
  43. }
  44.  
  45.  
  46. printf("%s:%ld:%d:%d\n","Watek_glowny", pthread_self() ,getpid(), wynikKoncowy);
  47.  
  48. return 0;
  49. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement