Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -module(telephone).
- -compile(export_all).
- start(N) when is_integer(N), N > 1 ->
- First = spawn( fun() -> loop() end ),
- First ! {set_recipient, start(N-1, First)},
- register(game_master, First).
- start(1, Neighbor) ->
- spawn( fun() -> loop(Neighbor) end );
- start(N, Neighbor) ->
- start(N-1, spawn( fun() -> loop(Neighbor) end )).
- play(Message) ->
- game_master ! {send, Message}.
- loop(WhoToTell) ->
- MyPid = self(),
- receive
- {send, Message} ->
- io:format("(~p) Whispering to my neighbor: ~p~n", [MyPid, Message]),
- WhoToTell ! {MyPid, Message},
- loop(WhoToTell);
- {MyPid, Message} ->
- io:format("(~p) Got my message back: ~p~n", [MyPid, Message]),
- loop(WhoToTell);
- {_Sender, Message}=X ->
- io:format("(~p) Passing message along: ~p~n", [MyPid, Message]),
- WhoToTell ! X,
- loop(WhoToTell)
- end.
- loop() ->
- receive
- {set_recipient, Pid} -> loop(Pid)
- end.
Add Comment
Please, Sign In to add comment