Процесс менеджера событий в эрланге. Названные процессы или пиды? - PullRequest
2 голосов
/ 26 октября 2009

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

Какой вариант подходит?

Спасибо!

Ответы [ 2 ]

6 голосов
/ 27 октября 2009

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

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

2 голосов
/ 26 октября 2009

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

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

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

...