如何向Erlang

时间:2016-07-26 17:33:34

标签: erlang broadcast

将消息发送/广播到一组进程的实用方式是什么。

说明:

  • 将在聊天室ID上收集用户,ETS存储将用于存储用户的进程ID 会议室ID {Pid, Rid}
  • 问题

    如何同步向所有与会议室ID 配对的流程发送消息?

    1 个答案:

    答案 0 :(得分:2)

    无法同步。

    您可以使用

    获取聊天室Rid中的用户Pid列表

    ListPid = ets:select(table,[{{'$1','$2'},[{'==','$2',Rid}],['$1']}])

    您可以使用列表推导或lists:foreach/2

    来广播消息

    lists:foreach(fun(X) -> X ! Message end,ListPid)

    根据您在ETS中搜索的频率,最好将信息存储为{Rid,Pid}并使用更快的ets:lookup / 2。