首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Erlang中,将消息传递给pids列表中的所有元素

在Erlang中,将消息传递给pids列表中的所有元素
EN

Stack Overflow用户
提问于 2015-03-23 10:59:16
回答 1查看 1.1K关注 0票数 1

我正在尝试构建一个非常简单的屏障--同步服务器,在这个服务器上,最初会向它提供一些与之通信的进程。当一个进程完成时,它会收到一条带有该进程的Pid的消息,并保存一个要执行此操作的每个进程的列表。当障碍达到零时(所有进程都发送了消息),我的服务器需要向每个进程发送一条消息(我使用[Pid | ProcList]作为pids列表)。

我尝试过使用helper函数,但是没有用,列表理解让我陷入了无限循环,因此我正在研究如何使用list :foreach来解决这个问题。我是函数式编程的新手,但据我所知,这个foreach需要接受列表以及一个lambda-calculus函数来向列表中的每个节点发送消息。由于"!“的中缀性质,我还没有找到一种方法来做到这一点而不会导致语法错误。

EN

回答 1

Stack Overflow用户

发布于 2015-03-23 16:23:12

你是如何在列表理解中进行无限循环的?我必须说,这是相当具有挑战性的。试试这个:

代码语言:javascript
复制
Message = % broadcast message goes here
ListOfPids = % list of recipients
[Pid ! Message || Pid <- ListOfPids].

如果你想使用foreach,那么它接受一个参数函数作为第一个参数,所以需要首先包装send,因为它是两个参数函数。

代码语言:javascript
复制
Message =  % broadcast message goes here
ListOfPids = % list of recipients
Fun = fun (Pid) -> Pid ! Message end,
lists:foreach(Fun, ListOfPids).
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29202649

复制
相关文章

相似问题

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