Advertisement
Guest User

Untitled

a guest
Nov 20th, 2017
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.43 KB | None | 0 0
  1. Monitor H20;
  2. condition H, O, ok, done, next;
  3. boolean finish = true;
  4. int count = 0, idO = 0, idH = 0;
  5. int Oid, H1id, H2id;
  6.  
  7. bound(Oid, H1id, H2id) { ... }
  8.  
  9. barrierOxy(oxy, var hidro1, var hidro2)
  10. {
  11. if(finish) {H.signal(); finish = false;} //ovo je kao zamajac koristi se samo jednom da se pokrene postupak tj da se generise
  12.                                          //H.signal(), nakon toga sledeci put ce biti tek na kraju ovog procesa.
  13. O.wait(idO++); //Dabi se kiseonici koristili po redu po kojim su dosli.
  14. O.id = .... // Indetifikator kiseonika koristi se u metodi bound.
  15. ok.signal(); //Jvalja vodoniku da je kiseonik upisao svoj ID.
  16. bound(); //spajanje
  17. next.wait(); // ceka da se vodonici spoje sa njim pa onda generise H.signal() da bi se nastavio dalje proces.
  18. H.signal();
  19. }
  20.  
  21. barrierHidro(var oxy, hidro1, var hidro2)
  22. {
  23. H.wait(idH++);
  24. H1id = .... ; // indetifikator prvog atoma vodonika.
  25. count = count + 1; //
  26. if(count == 2){
  27. H2id = ...; count = 0;
  28. O.signal();
  29. ok.wait(); // ceka id od kiseonika.
  30. bound()
  31. done.signal(); //javlja onom prvom atomu vodonika da je zavrsio.
  32. }
  33. H.signal(); // oslobadja drugi atom vodonika; UPRAVO sam izvalio gresku ako nema atoma vodonika koji ceka ovo ce da ode u vetar i tu ce
  34.             // da mi zabode program :/
  35. done.wait(); //ceka na njega da se sjedini tj na tog drugog;
  36. bound();
  37. next.signal(); // javlja kiseonika da moze da pokrene sledeci vodonik, i ovde je ista greska.
  38. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement