1

我是新手erlang,所以我有一个问题gen_server。我仍然不清楚code_change()功能是如何工作的?

你能给我解释一下吗?

谢谢和最好的问候。

4

1 回答 1

3

这真的很容易。运行时gen_server,它包含在调用之间传递的状态( 和 的最后一个参数handle_call)。如果这是一个包含两个元素的元组,并且您使用发布处理程序进行热代码升级,并说新代码需要包含三个元素的元组,那么您需要在新代码使用旧状态之前转换状态。handle_casthandle_info{a, b}{a, b, c}

你用code_change. 在发布处理指令中指定update指令,然后,当发布处理程序升级活动节点上的代码时,它会调用code_change函数来转换状态。在转换状态时,进程暂停,然后以新状态恢复。

如果您不使用 Release Handler 在活动节点上进行发布升级,您可能不需要担心这一点。即使这样,它也仅在必须更改状态格式时使用,这并不常见。

于 2016-04-27T10:16:33.873 回答