У меня есть игровой сервер, на котором размещено несколько экземпляров игры. Игроки могут ввести идентификатор, чтобы присоединиться к текущей игре. Чтобы связать клиента с нужным экземпляром игры, у меня есть таблица ETS, которая сопоставляет идентификаторы игр с PID процесса Erlang, обрабатывающего этот конкретный экземпляр игры. Хотя это работает, мне не очень нравится использовать ETS, поскольку он создает глобальные данные, которые не находятся под контролем какого-либо одного процесса.
Я хочу знать следующее: Есть ли в Erlang/OTP идиоматический способ сопоставления идентификаторов с процессами? Можно ли использовать ETS в этом случае, поскольку данные по своей сути являются глобальными? Или у меня должен быть один процесс, в котором хранится словарь всех идентификаторов для обработки сопоставлений? Я чувствую, что это больше стиль Erlang, но может быть не таким производительным или параллельным. Я также наткнулся на gproc, просматривая другие ответы SO, которые кажутся улучшенным словарем процессов. Однако у меня сложилось впечатление, что использование словаря процесса не одобряется (согласно стандарту erlang. веб-страницу организации).
gproc
(rustyklophaus.com/articles/) вполне нормально. Известно, что он более стабилен/улучшен по сравнению со встроенным словарем процессов. Вы также можете использоватьmnesia
оперативные таблицы, но я думаю, чтоETS
тоже подойдет. - person Muzaaya Joshua   schedule 14.06.2012