- - - - CENAPAD-MGCO

contents index A seguir: Exemplo Acima: Ricart e Agrawala (1981) Anterior: Ricart e Agrawala (1981)


Algoritmo de Ricart e Agrawala - 2

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;



Osvaldo Carvalho - Postscript - Comentários?