我有一個遊戲服務器,它承載了多個遊戲實例。玩家可以輸入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