erlang 软件升级

软件升级:

加载

调用一个 未加载的文件或者显示的code:load_file/1 函数调用的时候都会 触发erlang代码服务器动态加载代码

热更新

当内存中的程序需要更新的时候, erlang VM 会维持两个版本, 一个是老版本 old , 一个是新版本 new. 热更新时,驻留在旧代码中的执行会继续执行旧的代码而其他情况下执行新的代码。
具体是:当函数调用为非限定调用的时候就使用旧代码, 而在使用M:F(A) 完全限定调用的时候, 就使用新的代码。
这个时候就会出现几个问题,
1. 如果一直调用local 代码是不是就一直不更新了?
2. 如果代码连续修改了两次,现在内存中就会有三个版本v(1) v(2) v(3), 那么如果最初的版本v(1)还在执行会被怎么处理?

用下面的代码来测试一下(代码来自elrang 编程指南)

-module(mod_test).
-export([main/0, loop/0, cal/1, do/1]).
main() ->
   register(foo, spawn(mod_test, loop,[])).

loop() ->
receive
      {Sender, X} ->
      Sender ! {self(),cal(X)}
end,
loop().


do(X) ->
       foo ! {self(),X},
receive 
  {_, Y} ->
     Y
end.
cal(X) ->
        X + 1.

1> c(mod_test).
{ok,mod_test}
2> mod_test:mai

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值