Advertisement
Guest User

Untitled

a guest
Jun 16th, 2019
117
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.20 KB | None | 0 0
  1. #include <iostream>
  2. #include <semaphore.h>
  3. #include <stdio.h>
  4. #include <stdlib.h>
  5. #include <thread>
  6.  
  7. using namespace std;
  8.  
  9. int  p[5];      //Array de Enteros
  10. sem_t mutex;    //Variable de tipo semaforo
  11.  
  12. void filosofo(int n_filosofo)
  13. {
  14.     cout<<"\nFilosofo ["<<(n_filosofo+1)<<"] esta pensando"<<endl;/*printf("\nFilosofo [%d] esta pensando",n_filosofo,"\n");*/
  15.     sem_wait(&mutex);
  16.  
  17.     while(p[n_filosofo] == 0 || p[(n_filosofo+1)%5] == 0)
  18.     {
  19.         sem_post(&mutex);
  20.         sem_wait(&mutex);
  21.     }
  22.     p[n_filosofo] = 0;
  23.     p[(n_filosofo + 1)%5] = 0;
  24.     sem_post(&mutex);
  25.     cout<<"\nFilosofo ["<<(n_filosofo+1)<<"] esta comiendo"<<endl;/*printf("\nFilosofo [%d] esta comiendo",n_filosofo);*/
  26.     sem_wait(&mutex);
  27.     p[n_filosofo] = 1;
  28.     p[(n_filosofo+1)%5] = 1;
  29.     sem_post(&mutex);
  30.     cout<<"\nFilosofo ["<<(n_filosofo+1)<<"] deja de comer"<<endl;
  31. }
  32.  
  33.  
  34. int main()
  35. {
  36.     thread hilo[10];
  37.  
  38.     sem_init(&mutex,1,1);
  39.  
  40.     for(int i=0;i<5;i++)
  41.     {
  42.         p[i] = 1;
  43.     }
  44.  
  45.     for(int i=0;i<5;i++)
  46.     {
  47.          hilo[i] = thread(filosofo,i);
  48.     }
  49.  
  50.      for(int i=0;i<5;i++)
  51.     {
  52.          hilo[i].join();
  53.     }
  54.  
  55.     system("PAUSE");
  56.     return 0;
  57. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement