Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Process 如何向所有链接的进程广播?_Process_Erlang_Publish Subscribe_Broadcast - Fatal编程技术网

Process 如何向所有链接的进程广播?

Process 如何向所有链接的进程广播?,process,erlang,publish-subscribe,broadcast,Process,Erlang,Publish Subscribe,Broadcast,假设我有一个进程X,他链接到其他3个进程[U,Y,Z]。如何将消息从X广播到这些进程?查看文档: broadcast_to_linked(Message) -> {links, Links} = process_info(self(), links), Fun = fun(P) -> P ! Message end, lists:foreach(Fun, Links). 您可以找到与erlang:process\u info/2类似的链接 [Pid ! Msg || P

假设我有一个进程X,他链接到其他3个进程[U,Y,Z]。如何将消息从X广播到这些进程?

查看文档:

broadcast_to_linked(Message) ->
  {links, Links} = process_info(self(), links),
  Fun = fun(P) -> P ! Message end,
  lists:foreach(Fun, Links).

您可以找到与erlang:process\u info/2类似的链接

[Pid ! Msg || Pid <- element(2, process_info(self(), links))]

[Pid!Msg | | Pid我反对使用理解的论点是,你最终得到了一个你不需要的结果。:-)是的,透析器也可能会抱怨。改用。最后我不需要广播到链接的进程。我需要广播到已知的节点。我正试图这样做,但它不起作用,你能帮忙吗?接收消息->case Msg of->_Other->[Pid!{self(),Msg}| | Pid“广播到节点”是什么意思?Erlang消息始终传递到进程。(注释中的代码使用反引号。)我有两个节点,每个节点上启动一个进程。我想在这些进程之间发送消息。第一个问题是一个节点如何发现另一个?第二个问题是如何在不同节点上的进程之间发送消息?需求已发生变化,我现在正在向不同节点上的进程发送消息。我已尝试使用tweaking您的解决方案,但我得到了以下错误:=错误报告===2014年4月12日::12:26:00===节点的进程中出错sub@Molly'的退出值:{badarg,[{subscriber ber,'-broadcast/2-fun-0-',3,[{file,“subscriber.erl”},{line,27}]},{lists,foreach,2,[{file,“lists.erl”},{line,1323}},{subscriber,loop,0,[{file,“subscriber.erl”},{line,38}}我对您的代码进行了如下调整:
broadcast(Msg,Reason)->
Fun=Fun(P)->P!{self(),Msg,Reason}end,`list:foreach(Fun,nodes())。