Erlang的文檔指出以下有關gen_servers:停止gen_server時選擇原因的語義是什麼?
...
注意,對於任何其他原因,而不是正常的,關機或關機{,期限}的gen_server假設終止因錯誤和錯誤報告使用error_logger:format/2發出。
來源:http://www.erlang.org/doc/man/gen_server.html#Module:terminate-2
因爲除了這三個原因都認爲是錯誤的東西,我推斷的理由normal
,shutdown
和{shutdown, Reason}
被認爲是正常行爲。
我想象一下,在正常情況下選擇停止gen_server的三個原因時,開發人員有一個動機,但我不太確定如何確定使用哪一個。
那麼我應該什麼時候使用normal
,shutdown
和{shutdown, Reason}
?
謝謝!我想我跳過了關於主管的閱讀:P – pedromanoel 2012-04-04 21:36:49
主管使用'shutdown'的原因是它實際上是一個錯誤值。所以如果一個孩子沒有陷入退出,那麼它會被殺死。如果它陷入退出,那麼它應該特別處理來自其父母(主管)的「關機」退出信號,並乾淨地終止。這是由OTP行爲處理的,所以不需要自己做。 – rvirding 2012-04-05 12:40:09