【发布时间】:2017-01-21 17:12:22
【问题描述】:
我是 Elixir 的新手,目前正在学习流程。在实践中,我编写了一个 ping pong 程序,从 2 个进程中打印“ping”和“pong”。进程在收到 1 或 2 条消息后总是死亡。这是我的代码
defmodule Pingpong do
def play do
receive do
{sender, :ping} ->
IO.puts "ping"
send sender, {self, :pong}
play
{sender, :pong} ->
IO.puts "pong"
send sender, {self, :ping}
play
end
end
def start() do
a = spawn(Pingpong, :play, [])
b = spawn(Pingpong, :play, [])
send a, {b, :ping}
end
end
有时我只得到一行输出
$ elixir -r pingpong.exs -e "Pingpong.start"
> ping
或多行然后停止
ping
pong
ping
pong
ping
pong
但我认为它应该持续打印输出,直到我停止程序。 上面的代码有什么问题?
【问题讨论】:
标签: elixir