我正在尝试在erlang中开发一个聊天服务器,并且我想在一组进程之间广播消息,我提出了三种替代方案
- 将每条消息发送到主进程,主进程将消息发送到 小组的其他成员,对我来说似乎是一个瓶颈!。
- 使用包含该组所有 pid 的全局 ets 表 (过度复制)。
- 使用 upd 多播。
- pg 模块与 1 相同。
最好的方法是什么,还有其他选择吗?
最佳答案
更自然的方法是让每个进程了解与其通信的每个其他进程的 pid()。将 [pid()] 保持在进程状态,并通过使用 link/1 使其保持当前状态,以便在进程终止时接收到 {'EXIT', Pid, Reason}。
关于erlang进程间多播,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12925922/