[发明专利]软件模块的更新方法和装置有效
申请号: | 201510240885.7 | 申请日: | 2015-05-13 |
公开(公告)号: | CN104899057B | 公开(公告)日: | 2018-10-16 |
发明(设计)人: | 刘欢;杨振辉 | 申请(专利权)人: | 北京金山安全软件有限公司 |
主分类号: | G06F8/65 | 分类号: | G06F8/65 |
代理公司: | 北京清亦华知识产权代理事务所(普通合伙) 11201 | 代理人: | 张大威 |
地址: | 100085 北京*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 软件 模块 更新 方法 装置 | ||
本发明提出一种软件模块的更新方法和装置,该软件模块的更新方法包括对已加载的软件模块的多个访问请求进行序列化处理,得到序列化后的请求队列,其中,所述多个访问请求包括用于指示对所述软件模块进行更新的更新请求;由单一的线程依次从所述序列化后的请求队列中读取访问请求;当读取的访问请求是所述更新请求时,由所述单一的线程卸载所述软件模块,并重新加载更新后的所述软件模块。该方法可以实现软件模块的热更新。
技术领域
本发明涉及信息技术领域,尤其涉及一种软件模块的更新方法和装置。
背景技术
软件设计会将功能模块化,不同功能分别由不同模块实现,使得模块之间减少耦合,减少出错的几率。软件运行时,由宿主进程将软件模块加载到内存,对软件模块的功能进行调用。软件模块更新是重新加载新版本的软件模块,替换旧版本的软件模块。
软件模块的热更新是指不需要重启宿主进程,完成软件模块的更新。
现有技术中,宿主进程中可以存在多个线程同时访问加载的软件模块,为了保证安全卸载,在软件模块更新时,需要重启宿主进程,重新加载新版本的软件模块。由于需要重启宿主进程,也就不能实现软件模块的热更新。
发明内容
本发明旨在至少在一定程度上解决相关技术中的技术问题之一。
为此,本发明的一个目的在于提出一种软件模块的更新方法,该方法可以实现软件模块的热更新。
本发明的另一个目的在于提出一种软件模块的更新装置。
为达到上述目的,本发明第一方面实施例提出的软件模块的更新方法,包括:对已加载的软件模块的多个访问请求进行序列化处理,得到序列化后的请求队列,其中,所述多个访问请求包括用于指示对所述软件模块进行更新的更新请求;由单一的线程依次从所述序列化后的请求队列中读取访问请求;当读取的访问请求是所述更新请求时,由所述单一的线程卸载所述软件模块,并重新加载更新后的所述软件模块。
可选的,所述已加载的软件模块是从宿主进程之外的预设位置加载的。
可选的,所述对已加载的软件模块的多个访问请求进行序列化处理,包括:将所述对已加载的软件模块的多个访问请求,依次排列放入预设的缓存位置。
可选的,还包括:接收所述宿主进程内的第一线程发送的更新请求,所述第一线程发送的更新请求是所述第一线程接收到所述宿主进程之外的升级模块发送的更新请求后发送的,所述升级模块发送的更新请求是所述升级模块对所述软件模块进行更新并保存到所述预设位置后发送的。
可选的,所述访问请求还包括所述宿主进程内的第二线程对所述软件模块的访问请求,所述单一的线程是第三线程,所述第一线程,所述第二线程和所述第三线程互不相同。
本发明第一方面实施例提出的软件模块的更新方法,通过对软件模块的多个访问请求进行序列化处理,得到序列化后的请求队列,并由单一的线程依次从序列化后的请求队列中读取访问请求,可以保证在卸载软件模块时不存在其他线程访问该软件模块,由于不会存在多个线程同时访问加载的软件模块,可以在不重启宿主进程的情况下完成软件模块的更新,从而实现软件模块的热更新。
为达到上述目的,本发明第二方面实施例提出的软件模块的更新装置,包括:管理模块,用于对已加载的软件模块的多个访问请求进行序列化处理,得到序列化后的请求队列,其中,所述多个访问请求包括用于指示对所述软件模块进行更新的更新请求;读取模块,用于由单一的线程依次从所述序列化后的请求队列中读取访问请求;处理模块,用于当读取的访问请求是所述更新请求时,由所述单一的线程卸载所述软件模块,并重新加载更新后的所述软件模块。
可选的,还包括:加载模块,用于从宿主进程之外的预设位置加载所述软件模块。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京金山安全软件有限公司,未经北京金山安全软件有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201510240885.7/2.html,转载请声明来源钻瓜专利网。