Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -module(ring).
- -export([start/3, first/3, loop/3]).
- start(N,M,Message) ->
- io:format("Creo ~p processi che mandano ~p messaggi...~n",[N,M]),
- spawn(ring,first,[M,Message,spawn_ring(N-1,M,Message,self())]).
- spawn_ring(1,M,Message,First)->spawn(ring,loop,[M,Message,First]);
- spawn_ring(N,M,Message,First)->spawn(ring,loop,[M,Message,spawn_ring(N-1,M,Message,First)]).
- first(M,Message,To)->
- invia(M,Message,To),
- ricevi().
- loop(M,Message,To)->
- ricevi(),
- invia(M,Message,To).
- invia(1,Message,To)->
- io:format("Sono (~p), mando l'ultimo messaggio a (~p)~n~n",[self(),To]),
- To!{Message,self(),quit};
- %invia n messaggi
- invia(M,Message,To)->
- io:format("Sono (~p), mando un messaggio a (~p)~n~n",[self(),To]),
- To ! {Message,self()},
- invia(M-1,Message,To).
- ricevi()->
- receive
- {Message,FromPid} -> io:format("Sono ~p, ho ricevuto questo messaggio:~n ~p~n da ~p~n",[self(),Message,FromPid]), ricevi();
- {Message,FromPid,quit} -> io:format("Sono ~p, ho ricevuto questo messaggio:~n ~p~n da ~p~n A QUANTO PARE È L'ULTIMO MESSAGGIO...~n~n",[self(),Message,FromPid]);
- Other -> io:format("Unknown message~n~n")
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement