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}}== |