2

gen_server モジュール内のプロセス ディクショナリで遊んでいました。get() 関数を呼び出したところ、次のような結果が得られました。

{'$ancestors',[main_server,<0.30.0>]},
{'$initial_call',{child_server,init,1}}]

プロセス ディクショナリを消去するとどうなりますか?
私はそれを消去し、すべてが正常に機能しました.child_serverで例外を生成する関数を呼び出しても、main_serverはまだ終了信号を取得できます.

4

2 に答える 2

1

erlang:process_info/2 のように、一部のデバッグ関数はプロセス ディクショナリを使用する可能性があると思います。

于 2012-11-06T11:44:20.747 に答える
1

$ancestors初期化段階でのみ使用さEXITれ、親からのメッセージをキャッチするために使用される親の PID を取得して、terminate処理を実行できるようにします。サーバーが稼働しているときにこのキーを消去しても違いはありません。

$initial_call一方、クラッシュ レポートではproc_lib、MFA 情報をダンプするために使用されます。

OTP ソース ツリーをすばやくgrep確認すると、確かに役立ちます。

于 2012-11-08T08:02:46.010 に答える