SHARE
TWEET

Untitled

a guest Jan 12th, 2017 58 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  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. }
RAW Paste Data
Top