【发布时间】:2016-09-29 02:29:32
【问题描述】:
考虑这样简单的 GenServer 模块:
defmodule Crap do
use GenServer
... #All the needed crap
def handle_info(:kill_me_pls, state) do
GenServer.stop(self)
{:noreply, state}
end
def terminate(_, state) do
IO.inspect "Look! I'm dead."
end
end
并考虑将这些表达式放入 repl:
{:ok, pid} = Crap.start_link
send_message_to_that_pid
这就是我的想法开始的地方,因为Process.alive? pid 返回 true,但进程没有响应,terminate 没有被调用,尽管如果我在 repl 中调用 GenServer.stop(pid) 调用“干净”进程(有未收到终止消息)正确终止它。如果 stop 调用收到 :kill_me_pls 消息的进程会挂起 repl。
【问题讨论】:
标签: elixir