Elixir的Mix and OTP Guide Chapter GenServer解釋瞭如何使用GenServer
實施註冊服務器控股代理。爲什麼在執行GenServer時更好地跟蹤#Reference而不是#PID?
每個座席的PID保存在一張地圖中,其中的密鑰是由客戶端提供的座席名稱,值是座席的PID。
爲了避免保持到死劑的引用,導向提出了使用Process.monitor/1
監視新創建的代理,並通過添加新的地圖略微修改的狀態下,稱爲refs
,含有參考文獻(通過Process.monitor/1
返回的值)作爲鍵和代理商的名稱作爲值。它還顯示如何使用handle_info/2
更新refs
來處理監控消息。
Process.monitor/1
接收PID(例如#PID<0.66.0>
)作爲參數並返回參考(例如#Reference<0.0.0.551>
)。由handle_info/2
捕獲的:DOWN
消息提供了PID和參考。
既然我們都知道這兩個值:使用引用作爲refs
中使用PID的鍵的好處是什麼?