我有一个游戏服务器,它承载了多个游戏实例。玩家可以输入ID加入当前正在运行的游戏。为了将客户与他们想要的游戏实例配对,我有一个ETS表,它将游戏ID映射到处理特定游戏实例的Erlang进程的PID。虽然这有效,但我并不喜欢使用ETS,因为它创建的是不受任何一个进程控制的全局数据。将ID映射到OTP/Erlang中的进程的习惯用法是什么?
我想知道的是:Erlang/OTP中是否有一种惯用的方式将标识符映射到进程?在这种情况下使用ETS ok,因为数据本身就是全球性的?或者我应该有一个存储处理映射的所有ID的字典的进程?我觉得这是更多的Erlang风格,但可能不是性能或并发。我看到其他SO答案时也遇到了gproc,这似乎是一个改进的过程字典。不过,我的印象是,使用过程字典是皱眉(according to the erlang.org web page)。
'gproc'(http://rustyklophaus.com/articles/20090916-GProcErlangGlobalProcessRegistry.html)就好。与内置的过程字典相比,其已知更稳定/改进。你也可以使用'mnesia'内存表,但我认为'ETS'也很好。 –
看看这个问题http://stackoverflow.com/questions/5319553/what-distributed-process-registries-are-available-for-erlang – loxs