关于热更新的东西

来源:互联网 发布:2016最新网络歌曲 编辑:程序博客网 时间:2024/04/30 20:41

这几天读了这个blog,进一步深入的了解了关于erlang更新相关的东西

http://blog.csdn.net/mycwq/article/details/43372687


使用代码更新的时候,有一点要注意

c:l()默认使用的do_purge(),do_purge有一个很危险的操作,就是会kill掉正在使用old代码的进程。

old代码是什么呢?

当代码加载进去的时候,erlang会为这份“代码"分配一块内存保存,然后让module的old指针指向的内容释放,current指针只想这块内存,同时把old指向原来的curr指针指向的内容。也就是说,erlang并不区分xxx.beam上的任何信息,是单纯把代码加载和替换。

为了保证进程的安全执行,就需要先把使用old代码的进程全部kill,然后把代码"版本"数据更新。

所以使用的时候,一定要小心,免得连续的更新代码导致进程被kill。








http://blogread.cn/it/article/5626?f=wb

0 0
原创粉丝点击