Умирает ли процесс Elixir, когда больше нет ссылок на его PID?

Новое в Эликсире и OTP. Пробуем несколько примеров приветствия с GenServer. Я пишу тесты, в которых каждый тест порождает процесс GenServer. Они не прекращаются явным образом. Умрет ли процесс после завершения теста?

Продолжение: если он не остановлен, превращаются ли они в процесс «зомби»? Кроме того, есть ли шаблон для их завершения после завершения теста?


person Abs    schedule 07.01.2017    source источник


Ответы (1)


Нет, процессы не являются сборщиком мусора. Да, они превращаются в «зомби» процессы.

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

person michalmuskala    schedule 07.01.2017