一种加载插件的方法及终端设备技术

技术编号:19691156 阅读:17 留言:0更新日期:2018-12-08 11:00
本发明专利技术公开了一种加载插件的方法及终端设备,在M个进程加载N个插件的过程中,所述M个进程中的各进程实时检测所述N个插件中的各插件的独占锁是否处于使用状态;其中,各插件利用各自的独占锁进行锁定,所述独占锁用于禁止所属插件响应没有获得所述独占锁的进程的加载请求;若所述M个进程中的各进程检测到所述N个插件中有独占锁处于使用状态的第一插件,则所述M个进程中的各进程加载所述N个插件中独占锁没有处于使用状态的第二插件。

【技术实现步骤摘要】
一种加载插件的方法及终端设备
本专利技术涉及通信
,尤其涉及一种加载插件的方法及终端设备。
技术介绍
插件(Plug-in,又称addin、add-in、addon或add-on,又译外挂)是一种遵循一定规范的应用程序接口编写出来的程序。插件是指会随着IE浏览器的启动自动执行的程序,其只能运行在程序规定的系统平台下,可能同时支持多个平台,但不能脱离指定的平台单独运行。也就是说,插件必须依附于应用程序的启动才能够运行。插件的类型有无数种,例如有些插件程序能够帮助用户更方便浏览因特网或调用上网辅助功能,有的插件可以帮助用户网上支付等等。例如,在安装相关的插件后,浏览器能够直接调用插件程序,用于处理特定类型的文件。鉴于插件的特殊性,在运行插件之前必须先加载插件,而在目前加载插件方式,多个进程可以在任意时刻加载插件,但是,如果允许两个及以上进程同时加载同一个插件,是会报错的。故而,现有技术存在的问题是,两个及以上进程同时加载同一个插件导致插件加载错误的技术问题。
技术实现思路
鉴于上述问题,为了避免多个进程在同一时刻加载同一个插件。提出了本专利技术以便提供一种克服上述问题或者至少部分地解决上述问题的一种加载插件的方法及终端设备。本专利技术的一个方面,提供了一种加载插件的方法,包括:在M个进程加载N个插件的过程中,所述M个进程中的各进程实时检测所述N个插件中的各插件的独占锁是否处于使用状态;其中,各插件利用各自的独占锁进行锁定,所述独占锁用于禁止所属插件响应没有获得所述独占锁的进程的加载请求;M、N为正整数;若所述M个进程中的各进程检测到所述N个插件中有独占锁处于使用状态的第一插件,则所述M个进程中的各进程加载所述N个插件中独占锁没有处于使用状态的第二插件。优选的,所述M个进程中的各进程实时检测所述N个插件中的各插件的独占锁是否处于使用状态,具体包括:所述M个进程中的各进程实时检测各插件的独占锁是否被其他进程获取;若是,则表示对应插件的独占锁处于使用状态。优选的,所述若所述M个进程中的各进程检测到所述N个插件中有独占锁处于使用状态的第一插件,则加载所述N个插件中独占锁没有处于使用状态的第二插件,具体包括:若所述M个进程中的各进程检测到所述N个插件中有独占锁处于使用状态的第一插件,在预设时间范围内,所述M个进程中的各进程每隔预设时长检测所述第一插件是否解锁;若在所述预设时间范围内所述M个进程中任一进程最快检测到所述第一插件解锁,则最快检测到所述第一插件解锁的进程获取所述第一插件的独占锁并加载所述第一插件;若在所述预设时间范围外,所述M个进程中的各进程检测到所述第一插件未解锁,则加载所述第二插件或者提示进程加载超时。优选的,所述若所述M个进程中的各进程检测到所述N个插件中有独占锁处于使用状态的第一插件,则加载所述N个插件中独占锁没有处于使用状态的第二插件,具体包括:若检测到所述N个插件中有独占锁处于使用状态的第一插件,所述M个进程中的各进程基于预设检测次数重复检测所述第一插件是否解锁;若在所述预设检测次数内所述M个进程中任一进程最快检测到所述第一插件解锁,则最快检测到所述第一插件解锁的进程获取所述第一插件的独占锁并加载所述第一插件;若在所述预设检测次数达到时,所述M个进程中的各进程检测到所述第一插件未解锁,则加载所述第二插件或者提示进程加载超时。优选的,所述M个进程中的各进程加载所述N个插件中独占锁没有处于使用状态的第二插件,具体包括:所述M个进程中的各进程创建用于读取所述第二插件的文件通道;所述M个进程中的各进程利用各自的文件通道获取所述第二插件的独占锁;若所述M个进程中的第一进程获取到所述第二插件的独占锁,则所述第一进程加载所述第二插件。优选的,所述第一进程加载所述第二插件之后,所述方法还包括:所述第一进程释放所述第二插件的独占锁。优选的,所述M个进程中的各进程创建读取所述第二插件的文件通道,具体包括:所述M个进程中的各进程创建所述第二插件的锁文件,用于放置所述第二插件的独占锁;所述M个进程中的各进程获得所述第二插件的锁文件的输出流;所述M个进程中的各进程获得所述第二插件的文件通道。优选的,所述第一进程加载所述第二插件,具体包括:所述第一进程将所述第二插件中的文件体读取到临时文件;其中,所述第二插件包含文件头和所述文件体;所述第一进程将所述临时文件重命名,成为可读插件;所述第一进程创建所述可读插件的类装载器,以加载所述可读插件;所述第一进程反射所述可读插件的插件入口类,使得所述第一进程和所述可读插件建立连接关系。优选的,所述第一进程释放所述第二插件的独占锁,具体包括:所述第一进程释放用于放置所述第二插件的独占锁的锁文件;所述第一进程关闭所述第二插件的文件通道;所述第一进程关闭所述第二插件的锁文件的输出流;所述第一进程删除所述第二插件的锁文件。本专利技术的另一个方面,一种终端设备,包括:第一检测模块,用于在M个进程加载N个插件的过程中,通过创建的所述M个进程中的各进程实时检测所述N个插件中的各插件的独占锁是否处于使用状态;其中,各插件利用各自的独占锁进行锁定,所述独占锁用于禁止所属插件响应没有获得所述独占锁的进程的加载请求;M、N为正整数;第一加载模块,用于若所述M个进程中的各进程检测到所述N个插件中有独占锁处于使用状态的第一插件,则通过所述M个进程中的各进程加载所述N个插件中独占锁没有处于使用状态的第二插件。优选的,所述第一检测模块,具体用于通过创建的所述M个进程中的各进程实时检测各插件的独占锁是否被其他进程获取;若是,则表示对应插件的独占锁处于使用状态。优选的,所述第一加载模块,具体包括:第二检测模块,用于若所述M个进程中的各进程检测到所述N个插件中有独占锁处于使用状态的第一插件,在预设时间范围内,通过所述M个进程中的各进程每隔预设时长检测所述第一插件是否解锁;第一获取模块,用于若在所述预设时间范围内所述M个进程中任一进程最快检测到所述第一插件解锁,则通过最快检测到所述第一插件解锁的进程获取所述第一插件的独占锁并加载所述第一插件;第二加载模块,用于若在所述预设时间范围外,通过所述M个进程中的各进程检测到所述第一插件未解锁,则加载所述第二插件或者提示进程加载超时。优选的,所述第一加载模块,具体包括:第三检测模块,用于若检测到所述N个插件中有独占锁处于使用状态的第一插件,通过所述M个进程中的各进程基于预设检测次数重复检测所述第一插件是否解锁;第二获取模块,用于若在所述预设检测次数内所述M个进程中任一进程最快检测到所述第一插件解锁,则通过最快检测到所述第一插件解锁的进程获取所述第一插件的独占锁并加载所述第一插件;第三加载模块,用于若在所述预设检测次数达到时,通过所述M个进程中的各进程检测到所述第一插件未解锁,则加载所述第二插件或者提示进程加载超时。优选的,所述第一加载模块,具体包括:第一读取模块,用于通过所述M个进程中的各进程创建读取所述第二插件的文件通道;第三获取模块,用于通过所述M个进程中的各进程利用各自的文件通道获取所述第二插件的独占锁;第四加载模块,用于若所述M个进程中的第一进程获取到所述第二插件的独占锁,则通过所述第一进程加载所述第二插件。优选的,所述终端设备还包括:释放模块,用于通过所述第一进程释放所述本文档来自技高网...

【技术保护点】
1.一种加载插件的方法,其特征在于,包括:在M个进程加载N个插件的过程中,所述M个进程中的各进程实时检测所述N个插件中的各插件的独占锁是否处于使用状态;其中,各插件利用各自的独占锁进行锁定,所述独占锁用于禁止所属插件响应没有获得所述独占锁的进程的加载请求;M、N为正整数;若所述M个进程中的各进程检测到所述N个插件中有独占锁处于使用状态的第一插件,则所述M个进程中的各进程加载所述N个插件中独占锁没有处于使用状态的第二插件。

【技术特征摘要】
1.一种加载插件的方法,其特征在于,包括:在M个进程加载N个插件的过程中,所述M个进程中的各进程实时检测所述N个插件中的各插件的独占锁是否处于使用状态;其中,各插件利用各自的独占锁进行锁定,所述独占锁用于禁止所属插件响应没有获得所述独占锁的进程的加载请求;M、N为正整数;若所述M个进程中的各进程检测到所述N个插件中有独占锁处于使用状态的第一插件,则所述M个进程中的各进程加载所述N个插件中独占锁没有处于使用状态的第二插件。2.如权利要求1所述的方法,其特征在于,所述M个进程中的各进程实时检测所述N个插件中的各插件的独占锁是否处于使用状态,具体包括:所述M个进程中的各进程实时检测各插件的独占锁是否被其他进程获取;若是,则表示对应插件的独占锁处于使用状态。3.如权利要求1所述的方法,其特征在于,所述若所述M个进程中的各进程检测到所述N个插件中有独占锁处于使用状态的第一插件,则加载所述N个插件中独占锁没有处于使用状态的第二插件,具体包括:若所述M个进程中的各进程检测到所述N个插件中有独占锁处于使用状态的第一插件,在预设时间范围内,所述M个进程中的各进程每隔预设时长检测所述第一插件是否解锁;若在所述预设时间范围内所述M个进程中任一进程最快检测到所述第一插件解锁,则最快检测到所述第一插件解锁的进程获取所述第一插件的独占锁并加载所述第一插件;若在所述预设时间范围外,所述M个进程中的各进程检测到所述第一插件未解锁,则加载所述第二插件或者提示进程加载超时。4.如权利要求1所述的方法,其特征在于,所述若所述M个进程中的各进程检测到所述N个插件中有独占锁处于使用状态的第一插件,则加载所述N个插件中独占锁没有处于使用状态的第二插件,具体包括:若检测到所述N个插件中有独占锁处于使用状态的第一插件,所述M个进程中的各进程基于预设检测次数重复检测所述第一插件是否解锁;若在所述预设检测次数内所述M个进程中任一进程最快检测到所述第一插件解锁,则最快检测到所述第一插件解锁的...

【专利技术属性】
技术研发人员:刘存栋卜云涛董涛
申请(专利权)人:北京奇虎科技有限公司
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1