Advertisement
Guest User

Untitled

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