15

我最近在 InfoQ 上看到了一个关于 Erlang 的视频,在该视频中,一位创建者展示了如何替换消息循环的行为。

他只是发送一条包含新版本消息循环代码的 lambda 的消息,然后调用它而不是再次调用旧循环。

Erlang 中的代码热交换指的是什么?还是其他一些更原生的功能?

4

1 回答 1

18

是的,erlang 服务器中的热插拔一般就是指这个特性。在 stackoverflow 问题Achifying code swapping in Erlang's gen_server中以及在这个整洁的Erlang Generic Server 教程这个 little one中有很好的解释。

Erlang/OTPgen_server模块提供了一种通用的方式来实现热插拔,通过Module:code_change/3在回调模块中实现一个函数。

这样,您可以在不关闭服务器代码的情况下升级服务器代码,或者如果某些事情没有按预期工作,则回退到以前的实现。通常,应使用通用发布处理程序进行热插拔。

于 2010-06-03T19:09:46.167 回答