Advertisement
Guest User

Untitled

a guest
Jan 12th, 2017
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.52 KB | None | 0 0
  1. Monitor draaideur {
  2. init() {
  3. condition naarBuiten = cond_init();
  4. condition naarBinnen = cond_init();
  5. condition naarBuitenWachten = cond_init();
  6. condition naarBinnenWachten = cond_init();
  7. condition kwartDraaien = cond_init();
  8.  
  9. bool magDraaien = false;
  10.  
  11. bool[4] kwartjes = new bool[];
  12. }
  13.  
  14. wachtOmBinnenTeGaan() {
  15. while (kwartjes[2]) {
  16. naarBinnenWachten.wait();
  17. }
  18. kwartjes[2] = true;
  19. }
  20.  
  21. wachtOmBuitenTeGaan() {
  22. while (kwartjes[0]) {
  23. naarBuitenWachten.wait();
  24. }
  25. kwartjes[0] = true;
  26. }
  27.  
  28. gaNaarBinnen() {
  29. while (!magNaarBinnen) {
  30. naarBinnen.wachten();
  31. }
  32. magNaarBinnen = false;
  33. kwartjes[0] = false;
  34. }
  35.  
  36. gaNaarBuiten() {
  37. while (!magNaarBuiten) {
  38. naarBuiten.wachten();
  39. }
  40. magNaarBuiten = false;
  41. kwartjes[2] = false;
  42. }
  43.  
  44. wachtOmKwartTeDraaien() {
  45. while (!magDraaien) {
  46. kwartDraaien.wait();
  47. }
  48. // De inhoud van kwartjes-array schuift een plaats door (circulair array)
  49. draaiKwartjesDoor();
  50. }
  51.  
  52. deur() {
  53. // Eerst mag er iemand naar buiten gaan
  54. magNaarBuiten = true;
  55. naarBuiten.notify();
  56.  
  57. magNaarBinnen = true;
  58. naarBinnen.notify();
  59.  
  60. naarBinnenWachten.notify();
  61. naarBuitenWachten.notify();
  62.  
  63. magDraaien = true;
  64. kwartDraaien.notify();
  65. }
  66. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement