Code
erlang
-module(pingpong).
-export([start/1]).
start(N) ->
Pong = spawn(fun() -> pong() end),
Ping = spawn(fun() -> ping(N, Pong) end),
ok.
ping(0, _Pong) ->
io:format("ping done~n");
ping(N, Pong) ->
Pong ! {ping, self()},
receive
pong -> io:format("ping received pong~n")
end,
ping(N - 1, Pong).
pong() ->
receive
{ping, From} ->
io:format("pong received ping~n"),
From ! pong,
pong();
stop ->
ok
end.
% Usage: pingpong:start(3).