% a little spawn / send benchmark. -module(ring). -export([ring/2]). ring(Size, Iters) -> Next = make_ring(Size - 1, self()), Next ! Iters, go(Next). make_ring(0, Knot) -> Knot; make_ring(Size, Knot) -> spawn(fun () -> Next = make_ring(Size - 1, Knot), go(Next) end). go(Next) -> receive 0 -> Next ! 0, clear(), ok; N -> Next ! (N - 1), go(Next) end. clear() -> receive _ -> clear() after 0 -> ok end.