Процесс управления событиями в erlang.Именованные процессы или Pid?

StackOverflow https://stackoverflow.com/questions/1626602

  •  06-07-2019
  •  | 
  •  

Вопрос

У меня есть процесс event manager, который отправляет события подписчикам (напримерhttp_session_created, http_session_destroyed).Если вместо именованного процесса используется Pid, я должен поместить его в функции для работы с event manager, но если используется именованный процесс, код будет более понятным.

Какой вариант является правильным?

Спасибо!

Это было полезно?

Решение

Хотя на самом деле нет никакой разницы в том, что процесс именует процесс, его регистрация делает его глобальным.По сути, вы сообщаете системе, что это глобальный сервис, которым может воспользоваться любой желающий.

Из вашего описания больше похоже, что вы даете им имена, чтобы сэкономить небольшие усилия по их переносу в вашем цикле.Если это так, я бы поместил их pid-коды в запись вместе со всеми другими данными о состоянии, которые вы носите с собой.Это гораздо лучше указывает на тип процессов.

Другие советы

Если у вас есть фиксированный набор процессов "подписчика", то используйте зарегистрированные имена IMO.

Если, напротив, у вас есть архитектура типа публикации / подписки, в которой подписчики приходят и уходят, то вам нужна инфраструктура для их отслеживания, и с этого момента на самом деле не имеет значения, используете ли вы Pid() или names .

Одним из недостатков использования зарегистрированных имен является то, что вам необходимо отслеживать их в вашей базе кода, чтобы избежать "коллизий".Так что это зависит от вас:лично я предпочитаю именованные процессы, поскольку, как вы говорите, это делает чтение кода более понятным.Так или иначе, OTP это не волнует.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top