Advertisement
Guest User

Untitled

a guest
Jun 23rd, 2017
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 0.75 KB | None | 0 0
  1. #include <pthread.h>
  2. #include <stdio.h>
  3.  
  4. pthread_mutex_t mutex[4];
  5. int var[4]={0,0,0,0};
  6. pthread_mutex_t lock=PTHREAD_MUTEX_INITIALIZER;
  7.    
  8. void *Mult(void *arg)
  9. {
  10.     int k = *((int*)arg);
  11.     pthread_mutex_lock(&mutex[k]);
  12.     k++;
  13.     k*=250;
  14.     int j = k-249;
  15.     pthread_mutex_unlock(&lock);
  16.     for(j;j<=k;j++)
  17.     {
  18.         if(j%3==0||j%5==0)var[(k/250)-1]+=j;
  19.         }
  20.     pthread_mutex_unlock(&mutex[(k/250)-1]);
  21.     }
  22.  
  23. int main()
  24. {
  25.     int i;
  26.     pthread_t threadid[4];
  27.     for(i=0;i<4;i++)
  28.     {
  29.         pthread_mutex_init(&mutex[i],NULL);
  30.         pthread_mutex_lock(&lock);
  31.         pthread_create(&threadid[i],NULL,&Mult,&i);
  32.         pthread_mutex_lock(&lock);
  33.         pthread_mutex_unlock(&lock);
  34.         }
  35.     for(i=0;i<4;i++)pthread_mutex_lock(&mutex[i]);
  36.     printf("resultado: %i\n",var[0]+var[1]+var[2]+var[3]);
  37.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement