UFMG - Pós-graduação em Ciência da Computação - Programação Paralela

A seguir: A Solução Higiênica: Condições Acima: The Drinking Philosophers Problem[#!Drinking!#] Anterior: A Solução Higiênica: Preliminares


A Solução Higiênica: Regras

R1
Requisitando um garfo f:
hungry, reqf(f), $\neg fork(f)$ $\rightarrow$
send request token for fork f;
reqf(f) := false
R2
Entregando um garfo f:
$\neg eating$, reqf(f), dirty(f) $\rightarrow$
send fork f;
dirty(f) := false;
fork(f) := false
R3
Recebendo um request token por f:
receive(ReqToken(f)) $\rightarrow$
reqf(f) := true
R4
Recebendo um garfo f:
receive(fork(f)) $\rightarrow$
fork(f) := true
R5
Começando a comer:
hungry, all forks $\rightarrow$
hungry := false;
eating := true;
dirty(f) := true for all f
R6
Acabando de comer:
eating $\rightarrow$
eating := false; thinking := true;



Osvaldo Carvalho