Esteu aquí: Inici Assignatures Programació Concurrent i en Temps Real Erlang: Exemples reanimador.erl

reanimador.erl

reanimador.erl — Erlang source code, 682 bytes

Continguts del fitxer

-module(reanimador).

-compile(export_all).

start() ->
    pacient:start(),
    spawn(?MODULE, monitor, [whereis(pacient)]).

monitor(Pid) ->
    io:format("Monitoritzant al pacient ~p. Constants estables.~n", [Pid]),
    erlang:monitor(process,Pid),
    receive
        {'DOWN', Ref, process, Pid,  normal} ->
            io:format("~p diu que  ~p ha mort~n",[Ref,Pid]);
        {'DOWN', Ref, process, Pid,  Motiu} ->
            io:format("~p: Alarma. El pacient ~p est� patint un/a  ~p~n",[Ref,Pid,Motiu]),
            io:format("Reanimant al pacient. Torna ... torna ... viu~n"),
            pacient:reanimar(),
            monitor(whereis(pacient))
    end.