Erlang 中的代码热交换

发布于 2024-09-03 22:17:07 字数 169 浏览 11 评论 0原文

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

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

Erlang 中的代码热交换指的是吗? 或者这是其他一些更原生的功能?

I recently saw a video about Erlang on InfoQ,
In that video one of the creators presented how to replace the behavior of a message loop.

He was simply sending a message containing a lambda of the new version of the message loop code, which then was invoked instead of calling the old loop again.

Is that code hot swapping in Erlang reffers to?
Or is that some other more native feature?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

裸钻 2024-09-10 22:17:07

是的,erlang服务器中的热插拔一般就是指这个特性。
stackoverflow问题中对此进行了很好的解释在Erlang的gen_server中实现代码交换 ,以及这个简洁的 Erlang 通用服务器教程这个小东西

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

这样,您可以在不关闭服务器代码的情况下升级服务器代码,或者在某些内容未按预期工作时回退到以前的实现。一般来说,应该使用通用的发布处理程序。

Yes, hot swapping in erlang servers generally refers to this feature.
It is well explained in the stackoverflow question Achieving code swapping in Erlang’s gen_server, and also in this neat Erlang Generic Server tutorial or this little one.

The Erlang/OTP gen_server module provides a generic way to achieve hot swapping, by implementing a Module:code_change/3 function in the callback module.

This way, you can upgrade a servers code without shutting it down, or fall back to former implementation if something does not work as expected. In general, hot swap should be put in place using the generic release handler.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文