-module(prace). -export([start/0, prace/1, pracant/1, pracantInterni/1]). pridej(Stare, Novy) -> prace(lists:append(Stare, [Novy])). % Když nějakou práci máme prace([Ukol|Zbyle]) -> receive % Tak dáme práci komukoliv, kdo si řekne {dejPraci, Pid} -> Pid ! {prace, Ukol}, % A pořád dokola prace(Zbyle); {ukol, Novy} -> % Přídáme a zkusíme zpracovat pridej([Ukol|Zbyle], Novy) end; % Když žádná práce není, tak jen přijímáme prace([]) -> receive {ukol, Novy} -> pridej([], Novy) end. pracantInterni(Centrum) -> Centrum ! {dejPraci, self()}, receive {prace, Ukol} -> Ukol(), pracantInterni(Centrum) end. pracant(Centrum) -> spawn(prace, pracantInterni, [Centrum]). start() -> Pid = spawn(prace, prace, [[]]), {fun(Ukol) -> Pid ! {ukol, Ukol} end, Pid}.