我有
Process.send_after(self(), {:do_thing, type, x, z, 0}, 60_000)
然后如果父进程死了,那就永远不会发生了
{:ok, pid} =
Task.start_link(fn ->
Process.send_after(self(), {:do_thing, type, x, z, 0}, 60_000)
end)
Process.unlink(pid)
但还是没解决我该怎么办
我也试过this = self()
然后是Process.send_after(this, {:do_thing, type, x, z, 0}, 60_000)
,但它不起作用。
1条答案
按热度按时间yx2lnoni1#
如流程模块文档所述:
如果给定的dest是一个未激活的PID,或者当给定的PID退出时,计时器将自动取消。
如果
dest
进程在计时器关闭时仍处于活动状态,则可以使用一个示例。下面的示例显示了一个Dog进程生成一个Cat进程,然后Cat进程调用Process.send_after/3
,Process.send_after/3
将消息发送回第三个进程。当计时器关闭时,Dog和Cat进程都不再存在。在iex中: