2017-01-07 17 views
4

Elixir和OTP新手。使用GenServer嘗試一些hello-world示例。我正在編寫測試,其中每個測試都會生成一個GenServer進程。他們沒有明確終止。測試結束後該過程是否會死亡?當不再有對PID的引用時,Elixir進程是否會死亡?

追問:如果沒有終止,他們會變成「殭屍」過程嗎?另外,測試完成後是否有終止它們的模式?

回答

4

不,進程不是垃圾收集。是的,他們變成了「殭屍」進程。

防止這種情況的模式是鏈接進程。當一個鏈接進程終止時 - 所有鏈接進程也會終止。因此,如果您從測試過程中使用GenServer.start_link啓動服務器 - 這會將服務器進程鏈接到測試進程,並且當測試存在時,服務器也將退出。