3
這應該是一個簡單的問題,但我不知道我的方法足以找到答案。Erlang消息隊列在進程中是否持久?
如果OTP管理程序在發生崩潰後重新啓動gen_server,新的子進程會繼承崩潰進程的消息隊列,還是在崩潰之前發送但尚未由丟棄在地板上的舊子進程處理的消息?
這應該是一個簡單的問題,但我不知道我的方法足以找到答案。Erlang消息隊列在進程中是否持久?
如果OTP管理程序在發生崩潰後重新啓動gen_server,新的子進程會繼承崩潰進程的消息隊列,還是在崩潰之前發送但尚未由丟棄在地板上的舊子進程處理的消息?
不,一個進程永遠不會繼承前一個進程設置的任何狀態。監督員只會重新啓動過程,首先使用相同的參數來啓動它。
如果你想恢復狀態,你應該確保這種狀態以持久方式保存(ETS表,磁盤上的文件,數據庫等)。
好的,所以消息隊列被認爲是進程狀態的一部分,而不是系統狀態? – regularfry 2011-04-05 11:42:05
正確,正常。 – 2011-04-05 13:07:44