CN103309730B - 跨进程回调的方法及装置 - Google Patents
跨进程回调的方法及装置 Download PDFInfo
- Publication number
- CN103309730B CN103309730B CN201210069097.2A CN201210069097A CN103309730B CN 103309730 B CN103309730 B CN 103309730B CN 201210069097 A CN201210069097 A CN 201210069097A CN 103309730 B CN103309730 B CN 103309730B
- Authority
- CN
- China
- Prior art keywords
- readjustment
- function
- cid
- result
- registration request
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Stored Programmes (AREA)
Abstract
本发明公开了一种跨进程回调的方法及装置,涉及计算机技术领域,用于解决在多进程编程时,实现跨进程回调较为繁琐的问题。本发明提供的方法包括:当源进程需要向目标进程回调第一函数时,向目标进程发送回调注册请求,所述回调注册请求包括所述源进程的标识PID、第一函数的标识CID、以及待处理的输入参数;目标进程根据所述CID确定第一函数,并根据第一函数对所述待处理的输入参数进行处理,得到处理结果;源进程接收目标进程发送的回调响应通知,获取处理结果,所述回调响应通知中包括所述CID、以及所述处理结果。本发明适用于计算机技术领域,用于在多进程编程时实现跨进程回调。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种跨进程回调的方法及装置。
背景技术
随着计算机技术的发展,软件已经成为终端设备不可缺少的一部分:系统软件能够便于用户与终端设备进行交互,应用软件能够使得终端设备具备更多的功能,使用户获得更好的体验。传统的软件开发采用单进程开发模型,在这种模型中,所有模块代码和数据都共享在同一个进程地址空间,从而可以方便的调用对方服务、高效地共享数据。同时,单进程开发模型存在如下缺陷:1、扩展性差:由于所有模块在一个进程中,没有明显的界限分隔,模块之间的依赖不易拆分,且无法支持大规模项目的开发,特别是跨部门合作开发,以及跨公司合作开发。2、安全性差:所有应用和平台运行在同一个进程地址空间,共享所有数据,意味着应用可以自由的访问平台内部的数据。3、稳定性差:任何代码的行为均会影响到整个程序,例如,若一个应用发生崩溃,则整个平台和其他应用都会崩溃而退出。
随着互联网业务的逐渐开放,互联网服务提供商提出了开放性的平台以向用户提供更细致、更有针对性的服务。例如:腾讯公司提出的Q+平台,该平台能够承载大量的第三方应用,需要满足高度的可扩展性、安全性、以及稳定性。单进程的开发模型无法满足Q+平台的这些要求。基于上述原因,多进程的软件架构应运而生,根据该架构可以建立多进程开发模型,能够帮助软件开发者开发出更安全、更稳定、扩展性更好的高质量软件。在建立多进程开发模型的过程中,如何实现跨进程调用是需要解决的重要问题。
在实现本发明的过程中,发明人发现现有技术中至少存在如下问题:
当源进程向目标进程调用指定的功能函数时,在目标进程得到了处理结果之后,需要通过专门的编程代码才能够将该处理结果回调至源进程;整个跨进程回调过程需要在源进程与目标进程之间需要进行多次通信,每次通信都需要编程代码才能够实现,导致在实现跨进程回调时较为繁琐且成本较高;且多进程开发模型和单进程开发模型下的回调的使用机制不同,在把现有软件开发模式向多进程模式移植的时候也非常困难。
发明内容
本发明的实施例提供一种跨进程回调的方法及装置,能够在多进程编程的过程中较便捷的实现跨进程回调,便于软件开发者能够开发出更安全、更稳定、扩展性更好的高质量软件。
为达到上述目的,本发明的实施例采用如下技术方案:
一方面,本发明实施例提供了一种跨进程回调的方法,所述方法包括:
当源进程需要向目标进程回调第一函数时,向目标进程发送回调注册请求,所述回调注册请求包括所述源进程的标识PID、第一函数的标识CID、以及待处理的输入参数;
目标进程根据所述CID确定第一函数,并根据第一函数对所述待处理的输入参数进行处理,得到处理结果;
源进程接收目标进程发送的回调响应通知,获取处理结果,所述回调响应通知中包括所述CID、以及所述处理结果。
另一方面,本发明实施例还提供了一种跨进程回调的装置,所述装置包括:
回调注册请求发送模块,用于当源进程需要向目标进程回调第一函数时,向目标进程发送回调注册请求,所述回调注册请求包括所述源进程的标识PID、第一函数的标识CID、以及待处理的输入参数;
回调处理模块,用于根据所述CID确定第一函数,并根据第一函数对所述待处理的输入参数进行处理,得到处理结果;
数据回调模块,用于接收目标进程发送的回调响应通知,获取处理结果,所述回调响应通知中包括所述CID、以及所述处理结果。
本发明实施例提供的跨进程回调的方法及装置,在进行多进程编程的过程中能够较便捷的实现跨进程回调,从而简化多进程开发的编程代码,便于软件开发者能够开发出更安全、更稳定、扩展性更好的高质量软件,并能够节省开发成本。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例一提供的跨进程回调的方法的流程示意图;
图2为本发明实施例二提供的跨进程回调的方法的流程示意图;
图3、图4为本发明实施例三提供的跨进程回调的装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例一
本发明实施例提供了一种跨进程回调的方法,如图1所示,所述方法包括:
101、当源进程需要向目标进程回调第一函数时,向目标进程发送回调注册请求,回调注册请求包括源进程的标识PID(ProcessIDentity,进程标识)、第一函数的回调函数标识CID(CallbackIdentity,回调函数标识)、以及待处理的输入参数。
其中,第一函数指代的是源进程需要向目标进程回调的回调函数。
102、目标进程根据CID确定第一函数,并根据第一函数对待处理的输入参数进行处理,得到处理结果。
其中,CID是第一函数的回调函数标识,用于目标进程确定源进程需要回调的函数。当源进程需要向目标进程同时回调多个函数时,可以向目标进程发送多个回调注册请求,每个回调注册请求中携带各回调函数的CID,以使得目标进程能够确定各回调函数。
103、源进程接收目标进程发送的回调响应通知,获取处理结果,将所述处理结果回调给第一函数,所述回调响应通知中包括所述CID、以及所述处理结果。
具体的,源进程接收到回调响应通知后,能够根据回调响应通知中的CID确定处理结果对应的回调函数,以便于源进程使用。
本发明实施例提供的跨进程回调的方法,在进行多进程编程的过程中能够较便捷的实现跨进程回调,从而简化多进程开发的编程代码,便于软件开发者能够开发出更安全、更稳定、扩展性更好的高质量软件,并能够节省开发成本。
实施例二
本发明实施例提供了一种跨进程回调的方法,如图2所示,所述方法包括:
201、当源进程需要向目标进程回调第一函数时,将第一函数的指针进行保存,生成与第一函数的指针相对应的CID。
其中,第一函数指代的是源进程需要向目标进程回调的回调函数。值得说明的是,在实际应用中,源进程可以向多个目标进程回调多个函数。为了便于理解,本发明实施例以一个回调函数(即第一函数)为例进行说明。
202、源进程向目标进程发送回调注册请求,回调注册请求包括源进程的标识PID、第一函数的标识CID、以及待处理的输入参数。
其中,回调注册请求用于源进程向目标进程完成回调注册,注册成功后,源进程则具备向目标进程回调函数的权限。
203、目标进程接收到回调注册请求后,生成与该回调注册请求对应的回调代理对象(CallbackProxy),将该回调代理对象保存于回调列表中,所述回调代理对象中包括所述PID和CID。
具体的,当目标进程同时接收到多个回调注册请求时,生成与各回调注册请求对应的回调代理对象,将生成的回调代理对象保存于回调列表中。
值得说明的是,本发明实施例中的CID是第一函数的回调函数标识,PID是源进程的标识。
204、目标进程根据CID确定第一函数,并根据第一函数对待处理的输入参数进行处理,得到处理结果。该处理结果是通过第一函数对所述待处理的输入参数进行处理后得到的结果。
205、目标进程从回调列表中遍历所有的回调代理对象,从中确定与回调注册请求对应的回调代理对象,获取PID和CID。
206、目标进程根据PID确定源进程,向源进程发送回调响应通知,回调响应通知中包括CID、以及处理结果。
也就是说,在目标进程通过第一函数对所述待处理的输入参数进行处理、得到处理结果后,从回调列表中查找与回调注册请求对应的回调代理对象,进一步确定CID和PID,再根据PID确定源进程,将CID和处理结果返回给源进程。
207、源进程接收回调响应通知,从回调响应通知中获取处理结果和CID,根据CID确定第一函数的指针,根据该指针将该处理结果回调给第一函数。
值得说明的是,本发明实施例中的源进程指代的是调用进程,目标进程指代的是被调用进程,同一个进程能够根据实际场景的不同确定为源进程或目标进程。例如:当进程A向进程B回调函数时,进程A为源进程;当进程C向进程A回调函数时,则进程A为目标进程。
在本实施例中,源进程和目标进程在进行数据交互时,能够将需要交互的数据打包后进行处理(例如:将PID、CID、以及待处理的输入参数打包为回调注册请求,将CID、处理结果打包为回调响应通知),从而在实现跨进程回调时较为便捷。
本发明实施例提供的跨进程回调的方法,在进行多进程编程的过程中能够较便捷的实现跨进程回调,从而简化多进程开发的编程代码,便于软件开发者能够开发出更安全、更稳定、扩展性更好的高质量软件,并能够节省开发成本。
实施例三
本发明实施例提供了一种跨进程回调的装置,能够实现上述方法实施例,如图3所示,所述装置包括:
回调注册请求发送模块31,用于当源进程需要向目标进程回调第一函数时,向目标进程发送回调注册请求,所述回调注册请求包括所述源进程的标识PID、第一函数的标识CID、以及待处理的输入参数;
回调处理模块32,用于根据所述CID确定第一函数,并根据第一函数对所述待处理的输入参数进行处理,得到处理结果;
数据回调模块33,用于接收目标进程发送的回调响应通知,获取处理结果,将所述处理结果回调给第一函数,所述回调响应通知中包括所述CID、以及所述处理结果。
进一步的,如图4所示,所述装置还包括:
回调管理模块34,用于将所述第一函数的指针进行保存,生成所述CID,所述CID与所述第一函数的指针相对应。
回调列表管理模块35,用于接收到所述回调注册请求后,生成与该回调注册请求对应的回调代理对象,将该回调代理对象保存于回调列表中,所述回调代理对象中包括所述PID和CID。
回调触发模块36,用于从回调列表中遍历所有的回调代理对象,从中确定与所述回调注册请求对应的回调代理对象,获取所述PID和CID。
回调响应通知模块37,用于根据所述PID确定所述源进程,向所述源进程发送回调响应通知,所述回调响应通知中包括所述CID、以及所述处理结果;
具体的,数据回调模块33还用于接收所述回调响应通知,从所述回调响应通知中获取处理结果和所述CID,根据所述CID确定所述第一函数的指针,根据所述确定的第一函数的指针将所述处理结果回调给第一函数。
如图4所示,本实施例提供的装置在实现跨进程回调的过程中,回调注册请求模块31、回调管理模块34、以及数据回调模块33用于在源进程内进行相应的操作处理,回调处理模块32、回调列表管理模块35、回调触发模块36、回调响应通知模块37用于在目标进程内进行相应的操作处理。值得说明的是,本发明实施例中的源进程指代的是调用进程,目标进程指代的是被调用进程,同一个进程能够根据实际场景的不同确定为源进程或目标进程。例如:当进程A向进程B回调函数时,进程A为源进程;当进程C向进程A回调函数时,则进程A为目标进程。
本发明实施例提供的跨进程回调的装置,在进行多进程编程的过程中能够较便捷的实现跨进程回调,从而简化多进程开发的编程代码,便于软件开发者能够开发出更安全、更稳定、扩展性更好的高质量软件,并能够节省开发成本。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在可读取的存储介质中,如计算机的软盘,硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
Claims (10)
1.一种跨进程回调的方法,其特征在于,包括:
当源进程需要向目标进程回调第一函数时,向目标进程发送回调注册请求,所述回调注册请求包括所述源进程的标识PID、第一函数的标识CID、以及待处理的输入参数;
目标进程根据所述CID确定第一函数,并根据第一函数对所述待处理的输入参数进行处理,得到处理结果;
源进程接收目标进程发送的回调响应通知,获取处理结果,所述回调响应通知中包括所述CID、以及所述处理结果;
所述源进程接收目标进程发送的回调响应通知,获取处理结果,包括:所述源进程接收所述回调响应通知,从所述回调响应通知中获取处理结果和所述CID,根据所述CID确定所述第一函数的指针,根据确定的所述第一函数的指针将所述处理结果回调给第一函数。
2.根据权利要求1所述的方法,其特征在于,所述当源进程需要向目标进程回调第一函数时,向目标进程发送回调注册请求之前,还包括:
将所述第一函数的指针进行保存,生成所述CID,所述CID与所述第一函数的指针相对应。
3.根据权利要求1-2任一所述的方法,其特征在于,所述目标进程根据所述CID确定第一函数,并根据第一函数对所述待处理的输入参数进行处理,得到处理结果之前,还包括:
目标进程接收到所述回调注册请求后,生成与该回调注册请求对应的回调代理对象,将该回调代理对象保存于回调列表中,所述回调代理对象中包括所述PID和CID。
4.根据权利要求3所述的方法,其特征在于,所述目标进程根据所述CID确定第一函数,并根据第一函数对所述待处理的输入参数进行处理,得到处理结果之后,还包括:
从回调列表中遍历所有的回调代理对象,从中确定与所述回调注册请求对应的回调代理对象,获取所述PID和CID。
5.根据权利要求4所述的方法,其特征在于,所述源进程接收目标进程发送的回调响应通知,获取处理结果之前,还包括:
目标进程根据所述PID确定所述源进程,向所述源进程发送回调响应通知,所述回调响应通知中包括所述CID、以及所述处理结果。
6.一种跨进程回调的装置,其特征在于,包括:
回调注册请求发送模块,用于当源进程需要向目标进程回调第一函数时,向目标进程发送回调注册请求,所述回调注册请求包括所述源进程的标识PID、第一函数的标识CID、以及待处理的输入参数;
回调处理模块,用于根据所述CID确定第一函数,并根据第一函数对所述待处理的输入参数进行处理,得到处理结果;
数据回调模块,用于接收目标进程发送的回调响应通知,获取处理结果,所述回调响应通知中包括所述CID、以及所述处理结果;
其中,所述数据回调模块具体用于接收所述回调响应通知,从所述回调响应通知中获取处理结果和所述CID,根据所述CID确定所述第一函数的指针,根据确定的所述第一函数的指针将所述处理结果回调给第一函数。
7.根据权利要求6所述的装置,其特征在于,还包括:
回调管理模块,用于将所述第一函数的指针进行保存,生成所述CID,所述CID与所述第一函数的指针相对应。
8.根据权利要求6-7任一所述的装置,其特征在于,还包括:
回调列表管理模块,用于接收到所述回调注册请求后,生成与该回调注册请求对应的回调代理对象,将该回调代理对象保存于回调列表中,所述回调代理对象中包括所述PID和CID。
9.根据权利要求8所述的装置,其特征在于,还包括:
回调触发模块,用于从回调列表中遍历所有的回调代理对象,从中确定与所述回调注册请求对应的回调代理对象,获取所述PID和CID。
10.根据权利要求9所述的装置,其特征在于,还包括:
回调响应通知模块,用于根据所述PID确定所述源进程,向所述源进程发送回调响应通知,所述回调响应通知中包括所述CID、以及所述处理结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210069097.2A CN103309730B (zh) | 2012-03-15 | 2012-03-15 | 跨进程回调的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210069097.2A CN103309730B (zh) | 2012-03-15 | 2012-03-15 | 跨进程回调的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103309730A CN103309730A (zh) | 2013-09-18 |
CN103309730B true CN103309730B (zh) | 2016-03-16 |
Family
ID=49134989
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210069097.2A Active CN103309730B (zh) | 2012-03-15 | 2012-03-15 | 跨进程回调的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103309730B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105335238B (zh) * | 2014-08-12 | 2020-04-21 | 腾讯科技(深圳)有限公司 | 进程间通信方法及装置 |
CN109254855B (zh) * | 2018-08-29 | 2022-06-03 | 北京奇艺世纪科技有限公司 | 一种参数传输协议的注册方法、装置及电子设备 |
CN111880866B (zh) * | 2020-07-30 | 2024-03-12 | 广州方硅信息技术有限公司 | 跨进程回调执行方法、装置、设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1165343A (zh) * | 1996-03-05 | 1997-11-19 | 株式会社数字视觉实验室 | 并行分布处理系统及其方法 |
CN1470988A (zh) * | 2002-07-25 | 2004-01-28 | 梁肇新 | 进程间调用门技术 |
CN101196813A (zh) * | 2007-12-26 | 2008-06-11 | 上海科泰世纪科技有限公司 | 计算机软件系统中基于构件接口实现事件回调的方法 |
-
2012
- 2012-03-15 CN CN201210069097.2A patent/CN103309730B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1165343A (zh) * | 1996-03-05 | 1997-11-19 | 株式会社数字视觉实验室 | 并行分布处理系统及其方法 |
CN1470988A (zh) * | 2002-07-25 | 2004-01-28 | 梁肇新 | 进程间调用门技术 |
CN101196813A (zh) * | 2007-12-26 | 2008-06-11 | 上海科泰世纪科技有限公司 | 计算机软件系统中基于构件接口实现事件回调的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN103309730A (zh) | 2013-09-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9910708B2 (en) | Promotion of calculations to cloud-based computation resources | |
CN105940377B (zh) | 用于基于云的虚拟化编排器的方法、系统和计算机可读介质 | |
RU2019111902A (ru) | ПЛАТФОРМА "ФУНКЦИЯ-КАК-УСЛУГА" (FaaS) В БЛОКЧЕЙН СЕТЯХ | |
EP3125468B1 (en) | Cloud application processing method and application deployment method and relevant apparatus and system | |
CN107547595B (zh) | 云资源调度系统、方法及装置 | |
CN103795622A (zh) | 一种报文转发方法及其装置 | |
CN104395886A (zh) | 多租户中间件云服务技术 | |
US20170286167A1 (en) | Time-based adjustable load balancing | |
CN104660689B (zh) | 分布式计算系统 | |
CN104601680A (zh) | 一种资源管理方法及装置 | |
CN108304256B (zh) | 一种边缘计算中低开销的任务调度方法及装置 | |
CN103309730B (zh) | 跨进程回调的方法及装置 | |
CN107534577B (zh) | 一种网络业务实例化的方法及设备 | |
CN111045811A (zh) | 一种任务分配方法、装置、电子设备及存储介质 | |
CN105210324B (zh) | 策略与计费规则功能虚拟化方法、装置及系统 | |
CN111782404A (zh) | 一种数据处理方法及相关设备 | |
CN105718304A (zh) | 虚拟机管理方法及系统 | |
CN104267985A (zh) | 一种软件加载方法和设备 | |
CN110544159B (zh) | 一种地图信息处理方法、装置、可读存储介质和电子设备 | |
CN104778125A (zh) | 一种内存管理方法及系统 | |
CN105283864A (zh) | 管理裸机客户 | |
CN105812434B (zh) | 用户手持设备虚拟化后的业务链控制方法及装置 | |
JP2017049643A (ja) | 情報処理装置、ライセンス管理プログラム、及び、ライセンス管理方法 | |
US9369592B1 (en) | Accurate user data information | |
CN106230877B (zh) | 一种设备的远程管理方法、系统及设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |