我有一个托管多个游戏实例的游戏服务器。玩家可以输入一个 ID 来加入当前正在运行的游戏。为了将客户端与他们想要的游戏实例配对,我有一个 ETS 表,它将游戏 ID 映射到处理该特定游戏实例的 Erlang 进程的 PID。虽然这可行,但我并不喜欢使用 ETS,因为它创建的全局数据不受任何进程的控制。
我想知道的是:在 Erlang/OTP 中是否有一种惯用的方式将标识符映射到进程? 在这种情况下使用 ETS 可以吗,因为数据本质上是全局的?或者我应该有一个进程来存储所有 ID 的字典来处理映射?我觉得这更像是 Erlang 风格,但可能不如高性能或并发。我在查看其他 SO 答案时也遇到了gproc,这似乎是一个改进的过程字典。但是,我的印象是不赞成使用进程字典(根据 erlang.org 网页)。