一种跨进程回调的实现方法技术

技术编号:27419651 阅读:12 留言:0更新日期:2021-02-21 14:37
本发明专利技术提供一种跨进程回调的实现方法,包括如下步骤:S1.创建进程A,创建进程B;S2.进程A创建并初始化共享内存;S3.收到跨进程回调,回调参数写入到共享内存,将事件类型写入到共享内存;S4.进程A给进程B发送通知;S5.进程B启动,判断是否为退出事件;S6.若为退出事件,则退出;若不是退出事件,则判断共享内存中是否有未处理的事件操作;S7.若有未处理的事件操作,则从共享内存中获取事件类型;S8.从共享内存中获取此事件对应的数据,处理并将返回值写入到共享内存,设置事件状态为完成,返回继续等待全局事件状态;S9.进程A从共享内存中获取返回值,进程A结束。本发明专利技术解决了目前使用传统回调技术进行跨进程通信和异步,会比较困难的问题。问题。问题。

【技术实现步骤摘要】
一种跨进程回调的实现方法


[0001]本专利技术涉及计算机进程回调
,更具体地涉及一种跨进程回调的实现方法。

技术介绍

[0002]随着计算机技术的高速发展,软件的复杂度也越来越高,为了提高软件运行的稳定性,通常会把多个功能独立成单独的EXE应用程序,以提高程序运行时的稳定性,但同时又因为涉及到交互时用户交互的多样性,有些数据需要通过服务向界面层发送回调,且界面层需要根据用户的选择返回给具体的服务程序,但使用传统回调技术进行跨进程通信和异步,会比较困难,因此,有必要提供一种跨进程回调的实现方法,以克服上述问题。

技术实现思路

[0003]本专利技术提供了一种跨进程回调的实现方法,以解决目前使用传统回调技术进行跨进程通信和异步,会比较困难的问题。
[0004]为解决上述技术问题,本专利技术所采用的技术方案是:一种跨进程回调的实现方法,包括如下步骤:
[0005]步骤S1.创建进程A,进程A为主进程;创建进程B,进程B为副进程;
[0006]步骤S2.进程A启动,进程A创建并初始化共享内存,创建全局事件对象;
[0007]步骤S3.当收到来自进程A的跨进程回调,回调参数写入到共享内存,将事件类型写入到共享内存;
[0008]步骤S4.进程A给进程B发送通知,等待进程B全局事件对象返回;
[0009]步骤S5.进程B启动,进入等待全局事件状态,当收到A发送的通知,判断是否为退出事件;
[0010]步骤S6.若为退出事件,则退出,进程B结束;若不是退出事件,则判断首次启动进程B时,共享内存中是否有未处理的事件操作;
[0011]步骤S7.若没有未处理的事件操作,则进程B进入等待通知状态,当进程B收到通知,从共享内存中获取事件类型;若有未处理的事件操作,则从共享内存中获取事件类型;
[0012]步骤S8.根据事件类型进入不同的事件流程,根据事件类型从共享内存中获取此事件对应的数据,处理并将返回值写入到共享内存,设置事件状态为完成,返回继续等待全局事件状态;
[0013]步骤S9.进程A判断是否返回超时,若超时,则设置错误码并返回,进程A结束;若不超时,则从共享内存中获取返回值,进程A结束。
[0014]进一步地,进程A为工作线程。
[0015]进一步地,进程B为界面进程或辅助进程。
[0016]进一步地,步骤S2中,进程A创建全局共享内存,并按固定的数据结构进行初始化。
[0017]进一步地,步骤S2中,初始化过程中,进行数据块的区分。
[0018]进一步地,步骤S2中,根据数据块的类型、逻辑偏移和大小,来进行数据块的区分。
[0019]进一步地,步骤S4中,进程A有两种方式给进程B发送通知,一是能够即时响应的Socket套接字方式的跨进程通知方式;二是能够异步处理事件的全局事件通知方式。
[0020]进一步地,全局事件通知方式的步骤包括:
[0021]A1.进程A启动并创建全局的事件对象,并将此全局事件对象的访问权限设置为Everyone。
[0022]进一步地,全局事件通知方式的步骤还包括:
[0023]A2.进程B第一次启动,打开全局事件对象成功;
[0024]A3.从全局共享内存中获得指定类型的数据。
[0025]进一步地,全局事件通知方式的步骤还包括:
[0026]A4.根据从全局共享内存中获取到的事件类型进行对应的处理并设置返回结果;
[0027]A5.进程B设置消息处理的完成状态。
[0028]与现有技术相比,本专利技术具有以下有益效果:本专利技术的跨进程回调的实现方法通过创建进程A,创建进程B;创建并初始化共享内存;创建全局事件对象;即通过共享内存管理和信号管理,信号管理为跨进程的通知方式,即进程A和进程B的相互通知方式,共享内存管理为进程A和进程B的公共内存,进程A和进程B通过共享内存实现数据交互,即本专利技术通过共享内存管理和信号管理实现了跨进程回调。本专利技术具有简单快捷、准确有效的特点。
附图说明
[0029]图1为本专利技术的一种跨进程回调的实现方法的步骤示意图。
[0030]图2为本专利技术的一种跨进程回调的实现方法的进程A的流程图的示意图。
[0031]图3为本专利技术的一种跨进程回调的实现方法的进程B的流程图的示意图。
具体实施方式
[0032]下面结合附图进一步详细描述本专利技术的技术方案,但本专利技术的保护范围不局限于以下所述。
[0033]为使本专利技术实施方式的目的、技术方案和优点更加清楚,下面将结合本专利技术实施方式中的附图,对本专利技术实施方式中的技术方案进行清楚、完整地描述,显然,所描述的实施方式是本专利技术一部分实施方式,而不是全部的实施方式。基于本专利技术中的实施方式,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施方式,都属于本专利技术保护的范围。因此,以下对在附图中提供的本专利技术的实施方式的详细描述并非旨在限制要求保护的本专利技术的范围,而是仅仅表示本专利技术的选定实施方式。基于本专利技术中的实施方式,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施方式,都属于本专利技术保护的范围。
[0034]下面结合实施例对本专利技术作进一步的描述,所描述的实施例仅仅是本专利技术一部分实施例,并不是全部的实施例。基于本专利技术中的实施例,本领域的普通技术人员在没有做出创造性劳动前提下所获得的其他所用实施例,都属于本专利技术的保护范围。
[0035]请参阅图1至图3,图中所示者为本专利技术所选用的实施例结构,此仅供说明之用,在专利申请上并不受此种结构的限制。
[0036]实施例一
[0037]如图1、图2和图3所示,一种跨进程回调的实现方法,包括如下步骤:
[0038]步骤S1.创建进程A,进程A为主进程;创建进程B,进程B为副进程;
[0039]步骤S2.进程A启动,进程A创建并初始化共享内存,创建全局事件对象;
[0040]步骤S3.当收到来自进程A的跨进程回调,回调参数写入到共享内存,将事件类型写入到共享内存;
[0041]步骤S4.进程A给进程B发送通知,等待进程B全局事件对象返回;
[0042]步骤S5.进程B启动,进入等待全局事件状态,当收到A发送的通知,判断是否为退出事件;
[0043]步骤S6.若为退出事件,则退出,进程B结束;若不是退出事件,则判断首次启动进程B时,共享内存中是否有未处理的事件操作;
[0044]步骤S7.若没有未处理的事件操作,则进程B进入等待通知状态,当进程B收到通知,从共享内存中获取事件类型;若有未处理的事件操作,则从共享内存中获取事件类型;
[0045]步骤S8.根据事件类型进入不同的事件流程,根据事件类型从共享内存中获取此事件对应的数据,处理并将返回值写入到共享内存,设置事件状态为完成,返回继续等待全局事件状态;
[0046]步骤S9.进程A判断是否返回超时,若超时,则设置错误本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种跨进程回调的实现方法,其特征在于,包括如下步骤:步骤S1.创建进程A,进程A为主进程;创建进程B,进程B为副进程;步骤S2.进程A启动,进程A创建并初始化共享内存,创建全局事件对象;步骤S3.当收到来自进程A的跨进程回调,回调参数写入到共享内存,将事件类型写入到共享内存;步骤S4.进程A给进程B发送通知,等待进程B全局事件对象返回;步骤S5.进程B启动,进入等待全局事件状态,当收到A发送的通知,判断是否为退出事件;步骤S6.若为退出事件,则退出,进程B结束;若不是退出事件,则判断首次启动进程B时,共享内存中是否有未处理的事件操作;步骤S7.若没有未处理的事件操作,则进程B进入等待通知状态,当进程B收到通知,从共享内存中获取事件类型;若有未处理的事件操作,则从共享内存中获取事件类型;步骤S8.根据事件类型进入不同的事件流程,根据事件类型从共享内存中获取此事件对应的数据,处理并将返回值写入到共享内存,设置事件状态为完成,返回继续等待全局事件状态;步骤S9.进程A判断是否返回超时,若超时,则设置错误码并返回,进程A结束;若不超时,则从共享内存中获取返回值,进程A结束。2.如权利要求1所述的一种跨进程回调的实现方法,其特征在于,进程A为工作线程。3.如权利要求1所述的一种跨进程回调的实现方法,其特征在于,进程B为界面进程或辅助进...

【专利技术属性】
技术研发人员:先泽强
申请(专利权)人:成都傲梅科技有限公司
类型:发明
国别省市:

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

1