Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -module(ring2).
- -export([start/3, first/3, loop/4]).
- start(N,M,Message)->
- io:format("Creo ~p attori che inviano ~p messaggi...~n",[N,M]),
- spawn(ring2, first,[N,M,Message]).
- first(N,M,Message)-> %first must create 2nd actor that receives the messages sent by the first one
- Second= spawn(ring2,loop,[N-1,M,Message,self()]),
- invia(M,Message,Second),
- ricevi().
- loop(1,M,Message,First)->
- ricevi(),
- invia(M,Message,First);
- loop(N,M,Message,First)-> %loop must recieve messages then it create an actor to whom he sends the messages
- ricevi(),
- NextActor= spawn(ring2,loop,[N-1,M,Message,First]),
- invia(M,Message,NextActor).
- invia(1,Message,To)->
- io:format("~nSono ~p, sto inviando l'ULTIMO un messagio a ~p~n",[self(),To]),
- To ! {Message, self(), quit};
- invia(M,Message,To)->
- io:format("~nSono ~p, sto inviando un messaggio a ~p~n",[self(),To]),
- To ! {Message,self()},
- invia(M-1,Message,To).
- ricevi() ->
- receive
- {Message,From}->io:format("~nSono ~p, ho ricevuto messaggio~n~n~p~n~n ...da ~p~n",[self(),Message,From]),ricevi();
- {Message,From,quit} -> io:format("~nSono ~p, ho ricevuto l'ULTIMO messaggio~n~n~p~n~n ...da ~p~n",[self(),Message,From]);
- Other -> io:format("~nNon riconosco questo messagio~n")
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement