如何向多个进程发送消息

How do I send a message to multiple processes

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

您可以通过 for 循环

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

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

词汇表:pid = 进程 ID

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

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

这取决于你怎么称呼“消息”。对于传递到进程邮箱的消息,已经给出了答案。

此外,还有 Elixir 核心 Registry module that implements exactly what do you want (basically PubSub。)

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