Hallo ich lerne grade Monitore (für Klausur) und bin nun auf das Problem gestoßen, dass ich Monitore mit Signal-and-Continue beschrieben habe, jedoch Signal and Wait noch nie.
Ein Beispiel (Pseudocode):
Ich habe nun die Frage wie das genau bei Signal-and-Wait und Signal-and-urgentWait aussehen würde, da sich mir aus den formalen Aussagen über die beiden Prinzipien nicht wirklich klar wird wo genau der Unterschied liegt
Ein Beispiel (Pseudocode):
Code:
process Car {
if (dir = north || south){
bridge.enterFromNorth();
bridge.leaveFromNorth();
}
else {
bridge.enterFromSouth();
bridge.leaveFromSourh():
}
}
monitor Bridge {
int north = 0, south = 0;
Condition waitNorth, waitSouth;
procedure enterFromNorth() {
if (south > 0) waitNorth.wait();
north++
}
procedure leaveFromNorth(){
north--;
if (north == 0){
waitSouth.notifyAll();
}
}
procedure enterFromSouth(){
if (north > 0) waitSouth.wait();
south++
}
procedure leaveFromSouth(){
south--;
if (south == 0){
waitNorth.notifyAll();
}
}
Ich habe nun die Frage wie das genau bei Signal-and-Wait und Signal-and-urgentWait aussehen würde, da sich mir aus den formalen Aussagen über die beiden Prinzipien nicht wirklich klar wird wo genau der Unterschied liegt
Zuletzt bearbeitet von einem Moderator: