erlang代码更新知识

代码版本:--简单理解模块版本
Erlang允许加载的代码有两个版本: 'current'和'old';
一个模块被加载时是'current', 当再有一个版本被加载时,'current'变成'old',新加载的变成'current',此时两个版本同时存在.

对该模块新的请求执行的是新版本代码,而老代码还会被使用因为还有其他模块调用'old'版本。

如果再有第三个版本加载进来,那么需要通过code:purse/1清理'old'版本,随后可以load新模块,,这时第三个版本被加载进来, code server就会终止还驻留在'old'版本代码依赖的进程.

关于不同函数调用方式对触发热更的影响
1.直接调用F(A) --只存在于模块内的函数调用
2.完全限定调用M:F(A)--包括模块内以及模块之间通过import指令再直接通过函数名调用

完全限定调用总是引用当前版本代码,旧版本代码只可能通过直接调用的方式引用到

参数为模块名称 返回 true/false
code:purse/1 // 暴力,不安全
code:soft_purse/1 // 如果有进程占用该'old'版本代码,该版本不会被移除,返回false

interactive模式:
c(moduleName) // 实质上做了两件事 编译module和load module

code:is_loaded(Module) -> {file, Loaded} | false // 判断模块是否被加载
code:load_file(a). // 如果a引用了b模块,那么加载a会把b加载进来

命令行编译erl源文件: erlc a.erlc

code:soft_purge(ModuleName) andalso code:load_file(ModuleName).

/


参考:http://blog.csdn.net/kai1379/article/details/8503066
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值