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>
- int rozmiar_tab;
- int odp1=0;
- int suma=0;
- void *thread_function(void *arg) {
- static int i=0;
- int a=0;
- int odp1=0;
- int* tablica = (int*)arg;
- sleep(tablica[i]+1);
- suma=0;
- for(i; i<rozmiar_tab; i++){
- a++;
- odp1 = tablica[i]*tablica[i];
- printf ("element %d do potęgi to %d\n",tablica[i],odp1);
- suma+=odp1;
- if(a==2) break;}
- i++;
- printf("suma to %d\n",suma);
- pthread_exit(&suma);
- return NULL;
- }
- int main(int argc, char **argv)
- {
- rozmiar_tab=(argc-1);
- int i;
- if (argc==1){
- printf("Podaj liczby do obliczenia\n");
- return 1;
- }
- for (i=0;i<(argc-1);i++)
- {
- if (atoi(argv[i+1])==0)
- {
- printf("Podaj wartosci liczbowe\n");
- return 1;
- }
- }
- int tablica[argc-1];
- for (i = 0; i < argc-1; i++)
- {
- tablica[i]=atoi(argv[i+1]);
- printf("tablica[%d] = %d\n", i, tablica[i]);
- }
- int n=((sizeof tablica)/4);
- printf ("size %d\n",n);
- if(n%2==1){tablica[n+1]=0;}
- printf ("tab%d\n%",tablica[n+1]);
- n=((sizeof tablica)/4);
- printf ("size %d\n",n);
- int argumenty=argc-1;
- printf ("ilosc argumentow= %d\n",argumenty);
- if (argumenty%2==1){
- argumenty=(argumenty+1)/2;
- printf("liczba watkow = %d\n",argumenty);}
- else {
- argumenty=argumenty/2;
- printf("liczba watkow = %d\n",argumenty);}
- int COUNT=argumenty;
- int err;
- int cnt;
- pthread_t p_thread[COUNT];
- int *odp[2];
- for(cnt = 0; cnt < COUNT; cnt++){
- pthread_create(&p_thread[cnt], NULL, thread_function, &tablica[cnt]);
- }
- for(cnt = 0; cnt < COUNT; cnt++) {
- pthread_join(p_thread[cnt], (void **)&(odp[cnt]));
- int wynik_w=0;
- wynik_w=*odp[cnt];
- printf("wynik watku to: %d\n",wynik_w);
- static int razem=0;
- razem=razem+wynik_w;
- printf("wynik ogolny to: %d\n",razem);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement