首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用:via with :gproc获取PID

使用:via with :gproc获取PID
EN

Stack Overflow用户
提问于 2017-10-05 09:19:06
回答 1查看 331关注 0票数 0

我使用:gproc命名一些动态启动的GenServers,但我想向这些进程发送消息,我需要PID,如果我不使用:gproc.reg/1,我不确定如何通过gproc获得它们。

基本上,这是GenServer的一部分

代码语言:javascript
复制
  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

init函数中,我只是调度一个任务来发送一些消息,但是我需要PID。我想了一些方法来做这件事,但他们是黑客,看起来并不好。在这里检索PID的正确方法是什么?

我不确定这一部分,但是,我只是在这里注册名称,而不是要检索的实际进程,对吗?如果是这样的话,我怎么也能解决这个问题呢?

EN

回答 1

Stack Overflow用户

发布于 2018-05-11 00:09:17

根据上面的示例代码,它将是...

代码语言:javascript
复制
:gproc.where({:n, :l, {:name, name}})

我也有同样的问题。最后找到了用example here解释的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46576445

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档