Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <unistd.h>
- #include <stdio.h>
- #include <pthread.h>
- #include <errno.h>
- #include <stdlib.h>
- void *kwadrat(void *x){
- int zwracanaWartoscPrzezWatek = *((int*) x) * *((int*) x);
- return (void*)zwracanaWartoscPrzezWatek;
- }
- int main(int argc, char** argv)
- {
- int wynikKoncowy = 0;
- pthread_t watek[argc]; // deklarowanie watkow
- void *pobranieZwatku; // przechowuje wskaznik na adres
- int tab[argc]; // deklaracja tablicy w celu odczytania wartosci na standardowe wejscie
- int i; // zmienna sterujaca forem
- for(i=0 ; i<argc ; i++){
- tab[i] = atoi(argv[i]); // Przypisywanie argumentow do tablicy intowej
- }
- for( i=1; i<argc ; i++){ // stworzenie watkow tylu ile jest argumentow
- if(pthread_create(&watek[i], NULL, &kwadrat, &tab[i])){
- printf("błąd przy tworzeniu wątku.");
- }; // stworzenie watkow oraz przypisania im funkcji ktora maja wykonac i przekazany element do funkcji, w przypadku nieudanej proby wyswietli nam sie powiadomienie
- }
- int w;
- for( i=1; i<argc ; i++){
- if(pthread_join(watek[i], &pobranieZwatku)){
- printf("błąd przy konczeniu wątku.");
- }; // czekanie na zakonczenie watku oraz otrzymania od niego wartosci obliczonej, w przypadku nieudanej proby wyswietli nam sie powiadomienie
- wynikKoncowy += (int)pobranieZwatku; // obliczanie sumy
- printf("%d:%ld:%d:%s:%d\n",i, watek[i] ,getpid(), argv[i], (int)pobranieZwatku);
- }
- printf("%s:%ld:%d:%d\n","Watek_glowny", pthread_self() ,getpid(), wynikKoncowy);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement