Guest User

Untitled

a guest
Jun 19th, 2018
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.83 KB | None | 0 0
  1. program sesion06;
  2. const
  3. n = 5;
  4.  
  5. var
  6. buffer : array[0..n] of integer;
  7. frente : integer;
  8. cola : integer;
  9. mutex : semaphore;
  10. llenos : semaphore;
  11. vacios : semaphore;
  12.  
  13. process productor;
  14. var
  15. item : integer;
  16. i : integer;
  17. begin
  18. i := 0;
  19. repeat
  20. item := i;
  21. wait(mutex);
  22. buffer[frente] := item;
  23. frente := (frente + 1) mod n;
  24. signal(mutex);
  25. signal(llenos);
  26. i := i + 1;
  27. forever;
  28. end;
  29.  
  30. process consumidor;
  31. var
  32. item : integer;
  33. begin
  34. repeat
  35. wait(llenos);
  36. wait(mutex);
  37.  
  38. item := buffer[cola];
  39. cola := (cola + 1) mod n;
  40. writeln(item);
  41.  
  42. signal(mutex);
  43. signal(vacios);
  44.  
  45. forever;
  46. end;
  47.  
  48. begin
  49. initial(vacios, n);
  50. initial(llenos, 0);
  51. initial(mutex, 1);
  52.  
  53. frente := 0;
  54. cola := 0;
  55.  
  56. cobegin
  57. productor;
  58. consumidor;
  59. coend;
  60.  
  61. end.
Add Comment
Please, Sign In to add comment