【发布时间】:2017-03-04 04:25:29
【问题描述】:
我有一个简单的程序,当给定一个包含 {pid,integer} 的元组消息时,它将用它的 PID 和整数+1 将消息发送回处理器。问题是我需要让这个程序保持活动状态,这样我就可以向它发送多条消息,然后当我flush()它时,它会一次全部发回它的邮箱。它一次只能处理 1 条消息。我尝试了递归,但它不起作用。这是我所拥有的。
defmodule Spawner do
def start() do
spawn(fn ->
receive do
{pid,y} -> send(pid,y+1)
Spawner.start()
end
end)
end
end
然后在终端上我会这样做:
> x = Spawner.start()
> send x, {self(),3}
> send x, {self(),5}
> flush()
#⇒ output: {PID,4}
我需要输出为{PID,4} 和{PID,6}。
感谢您的宝贵时间。
【问题讨论】:
标签: concurrency process elixir pid