【问题标题】:How do I send a message to multiple processes如何将消息发送到多个进程
【发布时间】:2018-12-23 01:19:19
【问题描述】:

我需要一次向多个进程发送消息。有没有办法做到这一点,而无需遍历所有 PID 并将消息单独发送到每个进程?

【问题讨论】:

    标签: erlang elixir


    【解决方案1】:

    没有办法不涉及迭代,无论是直接的(你写的)还是间接的(一个库为你做的)

    【讨论】:

      【解决方案2】:

      您可以使用for 循环串联完成

      for pid <- listofPids do
         send pid, {:message, self() } 
      end
      

      self() 为接收进程提供消息发送者的 pid。

      术语表:pid = 进程 ID

      如果您准备从 Elixir 调用 Erlang,这里有一个相关问题: Erlang Multicast

      【讨论】:

      • 当然可以,但我想知道是否有更好的方法,类似于 UDP 广播或类似的方法。
      • 那么最好把它放在你的标题中。
      • 对不起,我以为我已经在问题中说清楚了。
      • 看看这个可以从 Elixir 执行的 Erlang 示例stackoverflow.com/questions/78826/erlang-multicast
      【解决方案3】:

      这取决于您所说的“信息”。对于传递到进程邮箱的消息,已经给出了答案。

      此外,还有 Elixir 核心 Registry 模块可以实现您想要的(基本上是 PubSub。)

      如果这对您来说是一种可行的方法,您可能想查看我编写的 Envío 库,以简化发布者和订阅者的创建并消除所需的所有样板。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-07-31
        • 1970-01-01
        • 1970-01-01
        • 2020-10-08
        • 1970-01-01
        • 1970-01-01
        • 2014-06-07
        • 2014-10-15
        相关资源
        最近更新 更多