Example of Wait/Signal
12
alarmclock: monitor
begin now: integer
wakeup: condition;
proc wake (n:int); wake me in n clock ticks
begin alarmsetting: int;
alarmsetting := now + n;
while now < alarmsetting do CONDITION.Wait(alarmsetting);
CONDITION.Signal(wakeup);
end;
proc tick; clock tick called by external clock
begin
now = now + 1;
CONDITION.Signal(wakeup);
end;
end alarmclock;
Previous slide
Next slide
Back to first slide
View graphic version