EnanoFurtivo

Productor-Consumidor [con semaforos]

Nov 30th, 2021
919
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. //PRODUCTOR//
  2. while(1)
  3.     {
  4.     //Seccion de entrada
  5.     wait_sem(semid,0);
  6.  
  7.     //Seccion critica
  8.     if(*dircontador != BUFFER_SIZE)
  9.     {
  10.         dirbuffer[pone] = Produccion();
  11.         pone = (pone + 1) % BUFFER_SIZE;
  12.         *dircontador = *dircontador + 1;
  13.     }
  14.  
  15.     //seccion de salida
  16.     signal_sem(semid,1);
  17. }
  18.  
  19. //CONSUMIDOR//
  20. while(1)
  21. {
  22.     //Seccion de entrada
  23.     wait_sem(semid,1);
  24.  
  25.     //Seccion critica
  26.     if(*dircontador != 0)
  27.     {
  28.         dirbuffer[sale] = '.';
  29.         sale = (sale + 1) % BUFFER_SIZE;
  30.         *dircontador = *dircontador - 1;
  31.         sleep(1);
  32.     }
  33.  
  34.     //Seccion de salida
  35.     signal_sem(semid,0);
  36. }
  37.  
  38.  
RAW Paste Data