我正在使用:gproc
命名一些动态启动的GenServers,但我想向这些进程发送消息,我需要PID,如果我有gproc
,我不确定如何使用:gproc.reg/1
我没有使用 def start_link(name) do
IO.inspect(via_tuple(name), label: "NAME")
GenServer.start_link(__MODULE__, %{name: name, songs: []},
name: via_tuple(name))
end
def queue(name, songs) do
GenServer.cast(via_tuple(name), {:queue, songs})
end
def dispatch(name) do
GenServer.cast(via_tuple(name), :dispatch)
end
def via_tuple(name) do
{:via, :gproc, {:n, :l, {:name, name}}}
end
。
基本上这是GenServer的一部分
init
并且在<style>
函数中我只是安排一个任务来发送一些消息,但我需要PID。我想过一些这样做的方法但是它们看起来并不好看。这可能是在这里检索PID的正确方法吗?
我不确定这部分但是,我只是在这里注册名称而不是要检索的实际进程,对吧?如果是这样的话,我怎么能解决这个问题呢?