Как отправить сообщение нескольким процессам - PullRequest
0 голосов
/ 22 декабря 2018

Мне нужно отправить сообщение нескольким процессам одновременно.Есть ли способ сделать это, не перебирая все PID и не отправляя сообщение каждому процессу отдельно?

Ответы [ 3 ]

0 голосов
/ 22 декабря 2018

Нет способа, который не включал бы итерацию, будь то прямой (вы пишете это) или косвенный (библиотека делает это за вас)

0 голосов
/ 22 декабря 2018

Это зависит от того, что вы называете «сообщением». Для сообщения, которое передается в почтовый ящик процесса, ответы уже даны.

Также есть модуль ядра Elixir Registry, который реализует именно то, что вы хотите (в основном PubSub.)

Если этоэто возможный путь для вас, возможно, вы захотите взглянуть на библиотеку Envío, которую я написал, чтобы упростить создание издателей и подписчиков и устранить все необходимые шаблоны.

0 голосов
/ 22 декабря 2018

Вы можете сделать это последовательно с циклом for

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

self() обеспечивает процесс приема с pid отправителя сообщения.

Глоссарий: pid = идентификатор процесса

Если вы готовы позвонить Эрлангу из Эликсира, то здесь уместен вопрос: Многоадресная рассылка Эрланга

...