Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Monitor draaideur {
- init() {
- condition naarBuiten = cond_init();
- condition naarBinnen = cond_init();
- condition naarBuitenWachten = cond_init();
- condition naarBinnenWachten = cond_init();
- condition kwartDraaien = cond_init();
- bool magDraaien = false;
- bool[4] kwartjes = new bool[];
- }
- wachtOmBinnenTeGaan() {
- while (kwartjes[2]) {
- naarBinnenWachten.wait();
- }
- kwartjes[2] = true;
- }
- wachtOmBuitenTeGaan() {
- while (kwartjes[0]) {
- naarBuitenWachten.wait();
- }
- kwartjes[0] = true;
- }
- gaNaarBinnen() {
- while (!magNaarBinnen) {
- naarBinnen.wachten();
- }
- magNaarBinnen = false;
- kwartjes[0] = false;
- }
- gaNaarBuiten() {
- while (!magNaarBuiten) {
- naarBuiten.wachten();
- }
- magNaarBuiten = false;
- kwartjes[2] = false;
- }
- wachtOmKwartTeDraaien() {
- while (!magDraaien) {
- kwartDraaien.wait();
- }
- // De inhoud van kwartjes-array schuift een plaats door (circulair array)
- draaiKwartjesDoor();
- }
- deur() {
- // Eerst mag er iemand naar buiten gaan
- magNaarBuiten = true;
- naarBuiten.notify();
- magNaarBinnen = true;
- naarBinnen.notify();
- naarBinnenWachten.notify();
- naarBuitenWachten.notify();
- magDraaien = true;
- kwartDraaien.notify();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement