如何向 Erlang 中的一组进程发送消息
How to send a message to group of processes in Erlang
将消息send/broadcast发送到进程组的实用方法是什么。
解释:
用户将聚集在聊天室ID
,ETS
存储将用于存储用户的进程ID和房间号 {Pid, Rid}
问题
如何同步向所有与房间ID配对的进程发送消息?
同步是不可能的。
您可以使用
获取聊天室 Rid 中的用户 Pid 列表
ListPid = ets:select(table,[{{'',''},[{'==','',Rid}],['']}])
并且您可以使用列表理解或 lists:foreach/2
广播消息
lists:foreach(fun(X) -> X ! Message end,ListPid)
根据您在 ETS 中进行搜索的频率,将信息存储为 {Rid,Pid} 并使用可能更快的 ets:lookup/2 可能是个好主意。
将消息send/broadcast发送到进程组的实用方法是什么。
解释:
ID
,ETS
存储将用于存储用户的进程ID和房间号 {Pid, Rid}
问题
如何同步向所有与房间ID配对的进程发送消息?
同步是不可能的。
您可以使用
获取聊天室 Rid 中的用户 Pid 列表ListPid = ets:select(table,[{{'',''},[{'==','',Rid}],['']}])
并且您可以使用列表理解或 lists:foreach/2
lists:foreach(fun(X) -> X ! Message end,ListPid)
根据您在 ETS 中进行搜索的频率,将信息存储为 {Rid,Pid} 并使用可能更快的 ets:lookup/2 可能是个好主意。