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在初始化阶段使用,用于获取父级的PID,用于捕获EXIT来自父级的消息,以便terminate执行该东西。在服务器启动并运行时擦除此密钥没有任何区别。

$initial_call另一方面,在崩溃报告中proc_lib用于转储 MFA 信息。

快速grep了解 OTP 源代码树肯定会有所帮助。

于 2012-11-08T08:02:46.010 回答