זו השאלה
שאלה 3 – סינכרוניזציה
זה הפתתרון:
Await(E,v)
boolean wait = false;
down(mutex)
if (v > E.v) {
wait = true;
waitval[MyId] = v;
}
up(mutex);
if (wait)
down(wait[MyId]);
למה אי אפשר לעשות כך:
בשביל מה צריך להוסיף את המשתנה הבוליאני?
Await(E,v){
down(mutex)
if (v > E.v) {
up(mutex)
waitval[MyId] = v;
down(wait[MyId]);
}
up(mutex);
