14 lines
459 B
Plaintext
14 lines
459 B
Plaintext
names = <|1 -> "Aristotle", 2 -> "Kant", 3 -> "Spinoza", 4 -> "Marx", 5 -> "Russell"|>;
|
|
n = Length[names];
|
|
rp := Pause[RandomReal[4]];
|
|
PrintTemporary[Dynamic[Array[forks, n]]];
|
|
Clear[forks]; forks[_] := Null;
|
|
With[{nf = n},
|
|
ParallelDo[
|
|
With[{i1 = i, i2 = Mod[i + 1, nf, 1]},
|
|
Do[Print[names[i], " thinking"]; rp; Print[names[i], " hungry"];
|
|
CriticalSection[{forks[i1], forks[i2]},
|
|
Print[names[i], " eating"]; rp],
|
|
{2}]],
|
|
{i, nf}]];
|