存储 GenServer 的 pid 以备将来使用
Storing pid of GenServer for future use
我需要在应用程序启动时启动 GenServer,但是调用和转换 Genserver 需要它的 PID。我将如何在应用程序的其余部分中获得它以供将来使用。
如果 GenServer 死掉并由主管重新启动,它将收到新的 pid,而你的 "stored" 将不再有效 - 你将无法访问你的 GenServer。这就是为什么你应该在这里使用名称:
{:ok, _} = GenServer.start_link(MyApp, [:hello], name: :your_genserver_name)
然后调用/转换看起来像:
def get_state do
GenServer.call(:your_genserver_name, {:get_state})
end
有关详细信息,请参阅文档的 this 部分。
我需要在应用程序启动时启动 GenServer,但是调用和转换 Genserver 需要它的 PID。我将如何在应用程序的其余部分中获得它以供将来使用。
如果 GenServer 死掉并由主管重新启动,它将收到新的 pid,而你的 "stored" 将不再有效 - 你将无法访问你的 GenServer。这就是为什么你应该在这里使用名称:
{:ok, _} = GenServer.start_link(MyApp, [:hello], name: :your_genserver_name)
然后调用/转换看起来像:
def get_state do
GenServer.call(:your_genserver_name, {:get_state})
end
有关详细信息,请参阅文档的 this 部分。