我是新手erlang
,所以我有一个问题gen_server
。我仍然不清楚code_change()
功能是如何工作的?
你能给我解释一下吗?
谢谢和最好的问候。
我是新手erlang
,所以我有一个问题gen_server
。我仍然不清楚code_change()
功能是如何工作的?
你能给我解释一下吗?
谢谢和最好的问候。
这真的很容易。运行时gen_server
,它包含在调用之间传递的状态( 和 的最后一个参数handle_call
)。如果这是一个包含两个元素的元组,并且您使用发布处理程序进行热代码升级,并说新代码需要包含三个元素的元组,那么您需要在新代码使用旧状态之前转换状态。handle_cast
handle_info
{a, b}
{a, b, c}
你用code_change
. 在发布处理指令中指定update
指令,然后,当发布处理程序升级活动节点上的代码时,它会调用code_change
函数来转换状态。在转换状态时,进程暂停,然后以新状态恢复。
如果您不使用 Release Handler 在活动节点上进行发布升级,您可能不需要担心这一点。即使这样,它也仅在必须更改状态格式时使用,这并不常见。