-
-
-
CENAPAD-MGCO
A seguir: Exemplo
Acima: Ricart e Agrawala (1981)
Anterior: Ricart e Agrawala (1981)
PROCEDURE Release();
BEGIN
lock(mutex);
Hungry := FALSE;
FOR j := 1 TO n DO
IF Deferred[j] THEN
send(reply, j); Deferred[j] := FALSE;
END;
END;
unlock(mutex);
END Release;
PROCEDURE ReceiveRequest(Tk, k: CARDINAL;);
BEGIN
lock(mutex);
HSN := MAX(HSN, Tk);
IF Hungry AND
((Tk > OSN) OR
(Tk = OSN) AND (k > i)) THEN
Deferred[k] := TRUE
ELSE
send(reply, k);
END;
unlock(mutex);
END ReceiveRequest;
PROCEDURE ReceiveReply();
BEGIN
lock(mutex)
ORC := ORC - 1;
IF ORC = 0 THEN WakeUp(B, mutex);
unlock(mutex);
END;