Dining philosophers: Difference between revisions

Content added Content deleted
No edit summary
No edit summary
Line 4,484: Line 4,484:
6342 - Russell eating 1- R
6342 - Russell eating 1- R
</pre >
</pre >

=={{header|Mathematica}} / {{header|Wolfram Language}}==
<lang Mathematica>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}]];</lang>
{{out}}
<pre>Aristotle thinking
Kant thinking
Spinoza thinking
Marx thinking
Russell thinking
Russell hungry
Russell eating</pre>


=={{header|Modula-3}}==
=={{header|Modula-3}}==