ゲームの複数のインスタンスをホストするゲーム サーバーがあります。プレイヤーは ID を入力して、現在実行中のゲームに参加できます。クライアントを必要なゲーム インスタンスとペアにするために、ゲーム ID をその特定のゲーム インスタンスを処理する Erlang プロセスの PID にマップする ETS テーブルがあります。これは機能しますが、ETS を使用する必要があるのはあまり好きではありません。ETS を使用すると、1 つのプロセスの制御下にないグローバル データが作成されるからです。
私が知りたいのは、Erlang/OTP で識別子をプロセスにマップする慣用的な方法はありますか? この場合、データは本質的にグローバルであるため、ETS を使用しても問題ありませんか? または、マッピングを処理するためのすべての ID の辞書を格納する 1 つのプロセスが必要ですか? それはよりErlangスタイルだと思いますが、パフォーマンスや並行性は劣るかもしれません。また、他のSOの回答を見ているときにgprocに出くわしました。これは、改善されたプロセス辞書のようです。ただし、プロセス辞書の使用は嫌われているという印象を受けました ( erlang.org Web ページによると)。