Processus de gestion d'événements à erlang. Processus nommés ou Pids?

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

  •  06-07-2019
  •  | 
  •  

Question

J'ai un processus de gestionnaire d'événements qui distribue des événements aux abonnés (par exemple, http_session_created, http_sesssion_destroyed). Si Pid est utilisé à la place du processus nommé, je dois l'insérer dans les fonctions à utiliser avec le gestionnaire d'événements, mais si le processus nommé est utilisé, le code sera plus clair.

Quelle variante a raison?

Merci!

Était-ce utile?

La solution

Bien qu'il n'y ait aucune différence réelle entre le processus qui nomme un processus, son enregistrement le rend global. En substance, vous indiquez au système qu’il s’agit d’un service mondial accessible à tous.

D'après votre description, il semble plus que vous leur donniez des noms pour économiser le petit effort de les transporter dans votre boucle. Si tel est le cas, je mettrais leurs pids dans un enregistrement avec toutes les autres données d'état que vous transportez. Cela indique beaucoup mieux le type de processus.

Autres conseils

Si vous disposez d'un ensemble fixe de " abonnés " processus, puis utilisez les noms enregistrés IMO.

Si, au contraire, vous avez une sorte d'architecture de publication / abonnement où les abonnés vont et viennent, alors vous avez besoin d'une infrastructure pour les suivre et à partir de maintenant, peu importe si vous utilisez Pid () ou des noms. .

L'un des inconvénients de l'utilisation de noms enregistrés est que vous devez les suivre dans votre base de code pour éviter les "collisions". C’est donc à vous de décider: personnellement, j’ai tendance à privilégier les processus nommés car, comme vous le dites, la lecture du code est plus claire. D'une manière ou d'une autre, OTP s'en fiche.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top