如果我删除了gen_server模块的进程字典会怎么样?

时间:2012-11-06 03:42:05

标签: erlang otp gen-server process-dictionary

我正在使用gen_server模块中的进程字典,我调用了get()函数,我得到了类似的东西。

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

如果我删除了流程词典会发生什么,会出什么问题? 我删除它,每件事情都很好,甚至 调用在child_server中生成异常的函数,main_server仍然可以获得退出信号。

2 个答案:

答案 0 :(得分:1)

我认为一些调试函数可能使用进程字典,例如erlang:process_info / 2

答案 1 :(得分:1)

$ancestors仅在初始化阶段使用 ,以获取父级的PID,用于捕获来自父级的EXIT消息,以便{ {1}}东西可以被执行。在服务器启动并运行时擦除此密钥没有任何区别。

另一方面,

terminate$initial_call的崩溃报告中用于转储MFA信息。

OTP源代码树中的快速proc_lib肯定有帮助。