2017-01-07 1 views
4

Nouveau pour Elixir et OTP. Essayer quelques exemples de bonjour avec GenServer. J'écris des tests où chaque test engendre un processus GenServer. Ils ne sont pas explicitement terminés. Le processus va-t-il disparaître après la fin de l'essai?Est-ce qu'un processus Elixir meurt lorsqu'il n'y a plus de références à son PID?

Suivi: Si ce n'est pas terminé, se transforment-ils en processus «zombie»? En outre, existe-t-il un modèle pour les terminer après la fin du test?

Répondre

4

Non, les processus ne sont pas collectés. Oui, ils se transforment en processus "zombies".

Le motif pour éviter cela est de lier les processus. Lorsqu'un processus lié se termine, tous les processus liés se terminent également. Donc, si vous démarrez votre serveur en utilisant GenServer.start_link du processus de test - cela liera le processus du serveur au processus de test et lorsque le test existe, le serveur va également quitter.