CN111506442A - 一种本地过程调用方法、装置、设备及介质 - Google Patents
一种本地过程调用方法、装置、设备及介质 Download PDFInfo
- Publication number
- CN111506442A CN111506442A CN202010299179.0A CN202010299179A CN111506442A CN 111506442 A CN111506442 A CN 111506442A CN 202010299179 A CN202010299179 A CN 202010299179A CN 111506442 A CN111506442 A CN 111506442A
- Authority
- CN
- China
- Prior art keywords
- function
- session object
- session
- call
- calling
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 506
- 230000006870 function Effects 0.000 claims description 296
- 238000004590 computer program Methods 0.000 claims description 12
- 230000001360 synchronised effect Effects 0.000 claims description 9
- 238000004806 packaging method and process Methods 0.000 claims description 7
- 238000012423 maintenance Methods 0.000 abstract description 9
- 238000004891 communication Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer And Data Communications (AREA)
Abstract
本申请公开了一种本地过程调用方法、装置、设备及介质,包括:创建第一进程与第二进程间的进程连接对象;创建第一进程对应的第一会话对象;创建第二进程对应的第二会话对象;利用第一进程函数调用第一会话对象函数调用接口,并向第一会话对象函数调用接口传入目标参数;通过第一会话对象通知第二会话对象进行第二进程函数的调用;通过第一会话对象获取第二会话对象返回的函数调用结果;函数调用结果为所述第二进程函数返回给所述第二会话对象的调用结果,函数调用结果为目标参数对应的调用结果;通过第一会话对象将函数调用结果返回给第一进程函数。能够降低本地过程调用的复杂度,提高程序开发和维护效率、产品稳定性。
Description
技术领域
本申请涉及通信技术领域,特别涉及一种本地过程调用方法、装置、设备及介质。
背景技术
传统的进程间通信通常是通过管道、消息、信号、套接字等方式进行数据交换,但这些技术只提供了基本数据或信息的交互,无法满足进程间过程调用。
目前,为了满足进程间过程调用这一需求,出现了像gRPC及Thrift等开源的远程过程调用框架以及Microsoft RPC(即remote procedure call远程过程调用),但这些框架都是基于Client与Server端概念,适用于远程过程调用且概念比较复杂,开发和调试不方便,部署麻烦,扩展性不好,不太适用于本地过程调用。
发明内容
有鉴于此,本申请的目的在于提供一种本地过程调用方法、装置、设备及介质,能够降低本地过程调用的复杂度,从而提高了程序开发和维护的效率以及产品的稳定性。其具体方案如下:
第一方面,本申请公开了一种本地过程调用方法,包括:
创建第一进程与第二进程间的进程连接对象;所述进程连接对象包括所述第一进程对应的第一连接对象以及所述第二进程对应的第二连接对象;
创建所述第一进程对应的第一会话对象;
创建所述第二进程对应的第二会话对象;
利用第一进程函数调用第一会话对象函数调用接口,并向所述第一会话对象函数调用接口传入目标参数;所述第一进程函数为所述第一进程对应的函数;
通过所述第一会话对象通知所述第二会话对象进行第二进程函数的调用;所述第二进程函数为所述第二进程对应的函数;
通过所述第一会话对象获取所述第二会话对象返回的函数调用结果;其中,所述函数调用结果为所述第二进程函数返回给所述第二会话对象的调用结果,并且,所述函数调用结果为所述目标参数对应的调用结果;
通过所述第一会话对象将所述函数调用结果返回给所述第一进程函数,以完成所述第一进程与所述第二进程间的过程调用。
可选的,所述创建所述第一进程对应的第一会话对象,包括:
利用所述第一进程函数向所述第一连接对象发送会话创建请求;
利用所述第一连接对象创建所述第一进程对应的所述第一会话对象。
可选的,所述创建所述第二进程对应的第二会话对象,包括:
利用所述第一连接对象向所述第二连接对象发送会话创建请求,以便所述第二连接对象创建所述第二进程对应的所述第二会话对象。
可选的,所述通过所述第一会话对象通知所述第二会话对象进行第二进程函数的调用,包括:
通过所述第一会话对象通知所述第二会话对象进行第二进程函数的调用,其中,所述第一会话对象通过同步对象通知所述第二会话对象进行第二进程函数的调用。
可选的,所述本地过程调用方法,还包括:
通过所述第一会话对象或所述第二会话对创建所述同步对象。
可选的,所述利用第一进程函数调用第一会话对象函数调用接口,并向所述第一会话对象函数调用接口传入目标参数之后,还包括:
将所述目标参数封装为对应的函数调用数据,利用所述第一会话对象将所述函数调用数据放置于共享内存,以便所述第二会话对象收到所述第二进程函数对应的调用通知后,从所述共享内存中读取所述函数调用数据,并利用所述函数调用数据调用所述第二进程函数。
可选的,所述本地过程调用方法,还包括:
通过所述第一会话对象或所述第二会话对象创建所述共享内存。
第二方面,本申请公开了一种本地过程调用装置,包括:
进程连接对象创建模块,用于创建第一进程与第二进程间的进程连接对象;所述进程连接对象包括所述第一进程对应的第一连接对象以及所述第二进程对应的第二连接对象;
第一会话对象创建模块,用于创建所述第一进程对应的第一会话对象;
第二会话对象创建模块,用于创建所述第二进程对应的第二会话对象;
会话对象接口调用模块,用于利用第一进程函数调用第一会话对象函数调用接口,并向所述第一会话对象函数调用接口传入目标参数;所述第一进程函数为所述第一进程对应的函数;
进程函数调用通知模块,用于通过所述第一会话对象通知所述第二会话对象进行第二进程函数的调用;所述第二进程函数为所述第二进程对应的函数;
函数调用结果获取模块,用于通过所述第一会话对象获取所述第二会话对象返回的函数调用结果;其中,所述函数调用结果为所述第二进程函数返回给所述第二会话对象的调用结果,并且,所述函数调用结果为所述目标参数对应的调用结果;
函数调用结果返回模块,用于通过所述第一会话对象将所述函数调用结果返回给所述第一进程函数,以完成所述第一进程与所述第二进程间的过程调用。
第三方面,本申请公开了一种本地过程调用设备,包括处理器和存储器;其中,
所述存储器,用于保存计算机程序;
所述处理器,用于执行所述计算机程序以实现前述的本地过程调用方法。
第四方面,本申请公开了一种计算机可读存储介质,用于保存计算机程序,其中,所述计算机程序被处理器执行时实现前述的本地过程调用方法。
可见,本申请创建第一进程与第二进程间的进程连接对象;所述进程连接对象包括所述第一进程对应的第一连接对象以及所述第二进程对应的第二连接对象,以及创建所述第一进程对应的第一会话对象,创建所述第二进程对应的第二会话对象,然后利用第一进程函数调用第一会话对象函数调用接口,并向所述第一会话对象函数调用接口传入目标参数;所述第一进程函数为所述第一进程对应的函数,并通过所述第一会话对象通知所述第二会话对象进行第二进程函数的调用;所述第二进程函数为所述第二进程对应的函数,之后通过所述第一会话对象获取所述第二会话对象返回的函数调用结果;其中,所述函数调用结果为所述第二进程函数返回给所述第二会话对象的调用结果,并且,所述函数调用结果为所述目标参数对应的调用结果,最后通过所述第一会话对象将所述函数调用结果返回给所述第一进程函数,以完成所述第一进程与所述第二进程间的过程调用。这样,通过两进程的会话对象以及进程函数进行进程间的过程调用,能够降低本地过程调用的复杂度,从而提高了程序开发和维护的效率以及产品的稳定性。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请公开的一种本地过程调用方法流程图;
图2为本申请公开的一种具体的本地过程调用方法流程图;
图3为本申请公开的一种具体的本地过程调用结构示意图;
图4为本申请公开的一种同步对象和共享内存创建示意图;
图5为本申请公开的一种同步对象和共享内存的使用流程图;
图6为本申请公开的一种本地过程调用装置结构示意图;
图7为本申请公开的一种本地过程调用设备结构图;
图8为本申请公开的一种电子终端结构图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
目前,为了满足进程间过程调用这一需求,出现了像gRPC及Thrift等开源的远程过程调用框架以及Microsoft RPC,但这些框架都是基于Client与Server端概念,适用于远程过程调用且概念比较复杂,开发和调试不方便,部署麻烦,扩展性不好,不太适用于本地过程调用。为此,本申请提供了一种本地过程调用方案,能够降低本地过程调用的复杂度,从而提高了程序开发和维护的效率以及产品的稳定性。
参见图1所示,本申请实施例公开了一种本地过程调用方法,包括:
步骤S11:创建第一进程与第二进程间的进程连接对象;所述进程连接对象包括所述第一进程对应的第一连接对象以及所述第二进程对应的第二连接对象。
步骤S12:创建所述第一进程对应的第一会话对象。
在具体的实施方式中,本实施例利用第一进程函数向所述第一连接对象发送会话创建请求;然后利用所述第一连接对象创建所述第一进程对应的所述第一会话对象。
也即,第一进程函数向第一连接对象请求创建第一会话对象,第一连接对象创建第一会话对象。
步骤S13:创建所述第二进程对应的第二会话对象。
在具体的实施方式中,本实施例利用所述第一连接对象向所述第二连接对象发送会话创建请求,以便所述第二连接对象创建所述第二进程对应的所述第二会话对象。
也即,第一连接对象向第二连接对象请求创建第二会话对象,第二连接对象创建第二会话对象。
步骤S14:利用第一进程函数调用第一会话对象函数调用接口,并向所述第一会话对象函数调用接口传入目标参数;所述第一进程函数为所述第一进程对应的函数。
也即,在进行第一进程与第二进程间的过程调用时,第一进程函数先调用第一会话对象函数调用接口,并向所述第一会话对象函数调用接口传入目标参数,以便第二进程返回目标参数对应的调用结果。
并且,在面向对象设计中,所述第一会话对象函数调用接口也可以为第一会话对象method方法调用接口。
步骤S15:通过所述第一会话对象通知所述第二会话对象进行第二进程函数的调用;所述第二进程函数为所述第二进程对应的函数。
在具体的实施方式中,通过所述第一会话对象通知所述第二会话对象进行第二进程函数的调用,其中,所述第一会话对象通过同步对象通知所述第二会话对象进行第二进程函数的调用。
并且,本实施例可以通过所述第一会话对象或所述第二会话对创建所述同步对象。在一种具体的实施方式中,可以在前述步骤S12创建所述第一进程对应的第一会话对象之后,通过所述第一会话对象创建所述同步对象。在另一种具体的实施方式中,可以在前述步骤S13创建所述第二进程对应的第二会话对象之后,如果第一会话对象没有创建所述同步对象,则通过所述第二会话对创建所述同步对象。
步骤S16:通过所述第一会话对象获取所述第二会话对象返回的函数调用结果;其中,所述函数调用结果为所述第二进程函数返回给所述第二会话对象的调用结果,并且,所述函数调用结果为所述目标参数对应的调用结果。
也即,本实施例在第一会话对象通知所述第二会话对象进行第二进程函数的调用之后,第二会话对象调用第二进程函数,然后将函数调用结果返回给第二会话对象,第二会话对象返回函数调用结果给第一会话对象。
步骤S17:通过所述第一会话对象将所述函数调用结果返回给所述第一进程函数,以完成所述第一进程与所述第二进程间的过程调用。
可以理解的是,本实施例简化了本地进程过程调用的概念,提高了开发和维护的效率进程间过程调用效率高。并且本实施例由于简化了本地过程调用的涉及范围及使用了***最基本的技术,提高了产品的稳定性,同时,理解更简单,使用更方便,提升了用户体。以及配置方便,组件很小且易与产品集成,并且具有可扩展性。
并且,本实施例可以用于32位进程与64位进程间过程双向调用。
可见,本申请实施例创建第一进程与第二进程间的进程连接对象;所述进程连接对象包括所述第一进程对应的第一连接对象以及所述第二进程对应的第二连接对象,以及创建所述第一进程对应的第一会话对象,创建所述第二进程对应的第二会话对象,然后利用第一进程函数调用第一会话对象函数调用接口,并向所述第一会话对象函数调用接口传入目标参数;所述第一进程函数为所述第一进程对应的函数,并通过所述第一会话对象通知所述第二会话对象进行第二进程函数的调用;所述第二进程函数为所述第二进程对应的函数,之后通过所述第一会话对象获取所述第二会话对象返回的函数调用结果;其中,所述函数调用结果为所述第二进程函数返回给所述第二会话对象的调用结果,并且,所述函数调用结果为所述目标参数对应的调用结果,最后通过所述第一会话对象将所述函数调用结果返回给所述第一进程函数,以完成所述第一进程与所述第二进程间的过程调用。这样,通过两进程的会话对象以及进程函数进行进程间的过程调用,能够降低本地过程调用的复杂度,从而提高了程序开发和维护的效率以及产品的稳定性。
参见图2所示,本申请实施例提供了一种具体的本地过程调用方法,包括:
步骤S21:创建第一进程与第二进程间的进程连接对象;所述进程连接对象包括所述第一进程对应的第一连接对象以及所述第二进程对应的第二连接对象。
步骤S22:创建所述第一进程对应的第一会话对象。
步骤S23:创建所述第二进程对应的第二会话对象。
步骤S24:利用第一进程函数调用第一会话对象函数调用接口,并向所述第一会话对象函数调用接口传入目标参数;所述第一进程函数为所述第一进程对应的函数。
步骤S25:将所述目标参数封装为对应的函数调用数据,利用所述第一会话对象将所述函数调用数据放置于共享内存。
步骤S26:通过所述第一会话对象通知所述第二会话对象进行第二进程函数的调用;所述第二进程函数为所述第二进程对应的函数。
在具体的实施方式中,所述第一会话对象通过同步对象通知所述第二会话对象进行第二进程函数的调用。所述第二会话对象收到所述第二进程函数对应的调用通知后,从所述共享内存中读取所述函数调用数据,并利用所述函数调用数据调用所述第二进程函数。
并且,本实施例可以通过所述第一会话对象或所述第二会话对象创建所述共享内存。在一种具体的实施方式中,可以在前述步骤S22创建所述第一进程对应的第一会话对象之后,通过所述第一会话对象创建所述共享内存。在另一种具体的实施方式中,可以在前述步骤S23创建所述第二进程对应的第二会话对象之后,如果第一会话对象没有创建所述共享内存,则通过所述第二会话对创建所述共享内存。
可以理解的是,本实施例利用共享内存,提高了读写数据的性能,并增加了对大数据的支持。
步骤S27:通过所述第一会话对象获取所述第二会话对象返回的函数调用结果;其中,所述函数调用结果为所述第二进程函数返回给所述第二会话对象的调用结果,并且,所述函数调用结果为所述目标参数对应的调用结果。
在具体的实施方式中,所述第二会话对象将返回的函数调用结果放置于共享内存,通过所述同步对象通知所述第一会话对象共享内存中有函数调用结果,第一会话对象从共享内存中获取所述第二会话对象返回的函数调用结果。
步骤S28:通过所述第一会话对象将所述函数调用结果返回给所述第一进程函数,以完成所述第一进程与所述第二进程间的过程调用。
例如,参见图3所示,本申请实施例公开了一种具体的本地过程调用结构示意图。主要涉及到六个角色:进程A、进程B、函数、连接对象、会话对象及共享内存。第一阶段:创建会话,本实施例可以在函数内部创建,便于无状态处理,在另外一些实施例中,也可由函数外部创建。1、进程A函数向连接对象请求创建进程A会话对象;2、进程A连接对象创建进程A会话对象,进程A会话对象创建同步对象与共享内存(也可以由进程B会话对象创建);3、进程A连接对象向进程B连接对象请求创建进程B会话对象;4、进程B连接对象创建进程B会话对象,若进程A会话对象没有创建同步对象与共享内存则进程B会话对象负责创建;第二阶段函数调用(支持反向调用也既嵌套函数调用,也即,也可以进程B函数调用进程A函数),5、进程A函数调用进程A会话对象函数调用接口,传入相关参数;6、进程A会话对象通知进程B会话对象进行函数调用;7、进程B会话对象调用进程B函数;8、进程B函数返回函数调用结果给进程B会话对象;9、进程B会话对象返回函数调用结果给进程会话A对象;10、进程A会话对象返回函数调用结果给进程A函数,函数调用结束。
也即,本申请首先在进程间建立基本的连接机制,然后在进程间过程调用中通过连接机制建立会话(包含能提供高性能大数据的共享内存以及用于同步的事件、消息或信号等)机制,通过会话实现进程间过程调用。具体的工作过程如下:第一步进程A与进程B间创建进程间连接对象;第二步进程A或B通过连接对象创建过程调用所需的包含能提供高性能大数据的共享内存以及用于同步的事件、消息或信号的会话对象;第三步函数调用会话对象调用接口;第四步当前进程会话对象进行过程调用;第五步被调用会话对象调用实现接口并返回相关执行结果;第六步当前进程会话对象返回函数调用结果,过程调用结束,结束会话。进程A和B都可以通过第二步至第六步来进行双向调用。
参见图4所示,图4为本申请公开的一种同步对象和共享内存创建示意图。1、进程A会话对象利用***接口创建同步事件对象CreateEvent等来创建同步对象,其中,同步对象可以是***中的事件对象或锁对象或信号等,同步对象用于通知对方会话对象共享内存中有数据。2、进程A会话对象利用***接口创建共享内存CreateFileMapping,共享内存用来共享数据。3、进程B会话对象利用***接口打开同步事件对象OpenEvent等;4、进程B会话对象打开共享内存OpenFileMapping。
参见图5所示,图5为本申请公开的一种同步对象和共享内存的使用流程图。1、进程A会话对象放置函数调用数据至共享内存,2、进程A会话对象通知进程B会话对象共享内存中有数据,3、进程B会话对象收到通知,4、进程B会话对象从共享内存中读取函数调用数据进行函数调用。
参见图6所示,本申请公开了一种本地过程调用装置,包括:
进程连接对象创建模块11,用于创建第一进程与第二进程间的进程连接对象;所述进程连接对象包括所述第一进程对应的第一连接对象以及所述第二进程对应的第二连接对象;
第一会话对象创建模块12,用于创建所述第一进程对应的第一会话对象;
第二会话对象创建模块13,用于创建所述第二进程对应的第二会话对象;
会话对象接口调用模块14,用于利用第一进程函数调用第一会话对象函数调用接口,并向所述第一会话对象函数调用接口传入目标参数;所述第一进程函数为所述第一进程对应的函数;
进程函数调用通知模块15,用于通过所述第一会话对象通知所述第二会话对象进行第二进程函数的调用;所述第二进程函数为所述第二进程对应的函数;
函数调用结果获取模块16,用于通过所述第一会话对象获取所述第二会话对象返回的函数调用结果;其中,所述函数调用结果为所述第二进程函数返回给所述第二会话对象的调用结果,并且,所述函数调用结果为所述目标参数对应的调用结果;
函数调用结果返回模块17,用于通过所述第一会话对象将所述函数调用结果返回给所述第一进程函数,以完成所述第一进程与所述第二进程间的过程调用。
可见,本申请实施例创建第一进程与第二进程间的进程连接对象;所述进程连接对象包括所述第一进程对应的第一连接对象以及所述第二进程对应的第二连接对象,以及创建所述第一进程对应的第一会话对象,创建所述第二进程对应的第二会话对象,然后利用第一进程函数调用第一会话对象函数调用接口,并向所述第一会话对象函数调用接口传入目标参数;所述第一进程函数为所述第一进程对应的函数,并通过所述第一会话对象通知所述第二会话对象进行第二进程函数的调用;所述第二进程函数为所述第二进程对应的函数,之后通过所述第一会话对象获取所述第二会话对象返回的函数调用结果;其中,所述函数调用结果为所述第二进程函数返回给所述第二会话对象的调用结果,并且,所述函数调用结果为所述目标参数对应的调用结果,最后通过所述第一会话对象将所述函数调用结果返回给所述第一进程函数,以完成所述第一进程与所述第二进程间的过程调用。这样,通过两进程的会话对象以及进程函数进行进程间的过程调用,能够降低本地过程调用的复杂度,从而提高了程序开发和维护的效率以及产品的稳定性。
其中,所述第一会话对象创建模块12,具体用于利用所述第一进程函数向所述第一连接对象发送会话创建请求;利用所述第一连接对象创建所述第一进程对应的所述第一会话对象。
所述第二会话对象创建模块13,具体用于利用所述第一连接对象向所述第二连接对象发送会话创建请求,以便所述第二连接对象创建所述第二进程对应的所述第二会话对象。
所述进程函数调用通知模块15,具体用于通过所述第一会话对象通知所述第二会话对象进行第二进程函数的调用,其中,所述第一会话对象通过同步对象通知所述第二会话对象进行第二进程函数的调用。
并且,所述本地过程调用装置还包括同步对象创建模块,用于通过所述第一会话对象或所述第二会话对创建所述同步对象。
所述本地过程调用装置还包括函数调用数据封装模块,用于将所述目标参数封装为对应的函数调用数据。
所述本地过程调用装置还包括函数调用数据放置模块,用于利用所述第一会话对象将所述函数调用数据放置于共享内存,以便所述第二会话对象收到所述第二进程函数对应的调用通知后,从所述共享内存中读取所述函数调用数据,并利用所述函数调用数据调用所述第二进程函数。
所述本地过程调用装置还包括共享内存创建模块,用于通过所述第一会话对象或所述第二会话对象创建所述共享内存。
参见图7所示,图7为本申请实施例公开的一种本地过程调用设备,包括处理器21和存储器22;其中,所述存储器22,用于保存计算机程序;所述处理器21,用于执行所述计算机程序,以实现以下步骤:
创建第一进程与第二进程间的进程连接对象;所述进程连接对象包括所述第一进程对应的第一连接对象以及所述第二进程对应的第二连接对象;创建所述第一进程对应的第一会话对象;创建所述第二进程对应的第二会话对象;利用第一进程函数调用第一会话对象函数调用接口,并向所述第一会话对象函数调用接口传入目标参数;所述第一进程函数为所述第一进程对应的函数;通过所述第一会话对象通知所述第二会话对象进行第二进程函数的调用;所述第二进程函数为所述第二进程对应的函数;通过所述第一会话对象获取所述第二会话对象返回的函数调用结果;其中,所述函数调用结果为所述第二进程函数返回给所述第二会话对象的调用结果,并且,所述函数调用结果为所述目标参数对应的调用结果;通过所述第一会话对象将所述函数调用结果返回给所述第一进程函数,以完成所述第一进程与所述第二进程间的过程调用。
可见,本申请实施例创建第一进程与第二进程间的进程连接对象;所述进程连接对象包括所述第一进程对应的第一连接对象以及所述第二进程对应的第二连接对象,以及创建所述第一进程对应的第一会话对象,创建所述第二进程对应的第二会话对象,然后利用第一进程函数调用第一会话对象函数调用接口,并向所述第一会话对象函数调用接口传入目标参数;所述第一进程函数为所述第一进程对应的函数,并通过所述第一会话对象通知所述第二会话对象进行第二进程函数的调用;所述第二进程函数为所述第二进程对应的函数,之后通过所述第一会话对象获取所述第二会话对象返回的函数调用结果;其中,所述函数调用结果为所述第二进程函数返回给所述第二会话对象的调用结果,并且,所述函数调用结果为所述目标参数对应的调用结果,最后通过所述第一会话对象将所述函数调用结果返回给所述第一进程函数,以完成所述第一进程与所述第二进程间的过程调用。这样,通过两进程的会话对象以及进程函数进行进程间的过程调用,能够降低本地过程调用的复杂度,从而提高了程序开发和维护的效率以及产品的稳定性。
本实施例中,所述处理器21执行所述存储器22中保存的计算机子程序时,可以具体实现以下步骤:利用所述第一进程函数向所述第一连接对象发送会话创建请求;利用所述第一连接对象创建所述第一进程对应的所述第一会话对象。
本实施例中,所述处理器21执行所述存储器22中保存的计算机子程序时,可以具体实现以下步骤:利用所述第一连接对象向所述第二连接对象发送会话创建请求,以便所述第二连接对象创建所述第二进程对应的所述第二会话对象。
本实施例中,所述处理器21执行所述存储器22中保存的计算机子程序时,可以具体实现以下步骤:通过所述第一会话对象通知所述第二会话对象进行第二进程函数的调用,其中,所述第一会话对象通过同步对象通知所述第二会话对象进行第二进程函数的调用。
本实施例中,所述处理器21执行所述存储器22中保存的计算机子程序时,可以具体实现以下步骤:通过所述第一会话对象或所述第二会话对创建所述同步对象。
本实施例中,所述处理器21执行所述存储器22中保存的计算机子程序时,可以具体实现以下步骤:将所述目标参数封装为对应的函数调用数据,利用所述第一会话对象将所述函数调用数据放置于共享内存,以便所述第二会话对象收到所述第二进程函数对应的调用通知后,从所述共享内存中读取所述函数调用数据,并利用所述函数调用数据调用所述第二进程函数。
本实施例中,所述处理器21执行所述存储器22中保存的计算机子程序时,可以具体实现以下步骤:通过所述第一会话对象或所述第二会话对象创建所述共享内存。
并且,所述存储器22作为资源存储的载体,可以是只读存储器、随机存储器、磁盘或者光盘等,存储方式可以是短暂存储或者永久存储。
参见图8所示,本申请实施例公开了一种电子终端20,包括前述实施例中公开的处理器21和存储器22。关于上述处理器21具体可以执行的步骤可以参考前述实施例中公开的相应内容,在此不再进行赘述。
进一步的,本实施例中的电子终端20,还可以具体包括电源23、通信接口24、输入输出接口25和通信总线26;其中,所述电源23用于为所述终端20上的各硬件设备提供工作电压;所述通信接口24能够为所述终端20创建与外界设备之间的数据传输通道,其所遵循的通信协议是能够适用于本申请技术方案的任意通信协议,在此不对其进行具体限定;所述输入输出接口25,用于获取外界输入数据或向外界输出数据,其具体的接口类型可以根据具体应用需要进行选取,在此不进行具体限定。
进一步的,本申请实施例还公开了一种计算机可读存储介质,用于保存计算机程序,其中,所述计算机程序被处理器执行时实现以下步骤:
创建第一进程与第二进程间的进程连接对象;所述进程连接对象包括所述第一进程对应的第一连接对象以及所述第二进程对应的第二连接对象;创建所述第一进程对应的第一会话对象;创建所述第二进程对应的第二会话对象;利用第一进程函数调用第一会话对象函数调用接口,并向所述第一会话对象函数调用接口传入目标参数;所述第一进程函数为所述第一进程对应的函数;通过所述第一会话对象通知所述第二会话对象进行第二进程函数的调用;所述第二进程函数为所述第二进程对应的函数;通过所述第一会话对象获取所述第二会话对象返回的函数调用结果;其中,所述函数调用结果为所述第二进程函数返回给所述第二会话对象的调用结果,并且,所述函数调用结果为所述目标参数对应的调用结果;通过所述第一会话对象将所述函数调用结果返回给所述第一进程函数,以完成所述第一进程与所述第二进程间的过程调用。
可见,本申请实施例创建第一进程与第二进程间的进程连接对象;所述进程连接对象包括所述第一进程对应的第一连接对象以及所述第二进程对应的第二连接对象,以及创建所述第一进程对应的第一会话对象,创建所述第二进程对应的第二会话对象,然后利用第一进程函数调用第一会话对象函数调用接口,并向所述第一会话对象函数调用接口传入目标参数;所述第一进程函数为所述第一进程对应的函数,并通过所述第一会话对象通知所述第二会话对象进行第二进程函数的调用;所述第二进程函数为所述第二进程对应的函数,之后通过所述第一会话对象获取所述第二会话对象返回的函数调用结果;其中,所述函数调用结果为所述第二进程函数返回给所述第二会话对象的调用结果,并且,所述函数调用结果为所述目标参数对应的调用结果,最后通过所述第一会话对象将所述函数调用结果返回给所述第一进程函数,以完成所述第一进程与所述第二进程间的过程调用。这样,通过两进程的会话对象以及进程函数进行进程间的过程调用,能够降低本地过程调用的复杂度,从而提高了程序开发和维护的效率以及产品的稳定性。
本实施例中,所述计算机可读存储介质中保存的计算机子程序被处理器执行时,可以具体实现以下步骤:利用所述第一进程函数向所述第一连接对象发送会话创建请求;利用所述第一连接对象创建所述第一进程对应的所述第一会话对象。
本实施例中,所述计算机可读存储介质中保存的计算机子程序被处理器执行时,可以具体实现以下步骤:利用所述第一连接对象向所述第二连接对象发送会话创建请求,以便所述第二连接对象创建所述第二进程对应的所述第二会话对象。
本实施例中,所述计算机可读存储介质中保存的计算机子程序被处理器执行时,可以具体实现以下步骤:通过所述第一会话对象通知所述第二会话对象进行第二进程函数的调用,其中,所述第一会话对象通过同步对象通知所述第二会话对象进行第二进程函数的调用。
本实施例中,所述计算机可读存储介质中保存的计算机子程序被处理器执行时,可以具体实现以下步骤:通过所述第一会话对象或所述第二会话对创建所述同步对象。
本实施例中,所述计算机可读存储介质中保存的计算机子程序被处理器执行时,可以具体实现以下步骤:将所述目标参数封装为对应的函数调用数据,利用所述第一会话对象将所述函数调用数据放置于共享内存,以便所述第二会话对象收到所述第二进程函数对应的调用通知后,从所述共享内存中读取所述函数调用数据,并利用所述函数调用数据调用所述第二进程函数。
本实施例中,所述计算机可读存储介质中保存的计算机子程序被处理器执行时,可以具体实现以下步骤:通过所述第一会话对象或所述第二会话对象创建所述共享内存。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上对本申请所提供的一种本地过程调用方法、装置、设备及介质进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (10)
1.一种本地过程调用方法,其特征在于,包括:
创建第一进程与第二进程间的进程连接对象;所述进程连接对象包括所述第一进程对应的第一连接对象以及所述第二进程对应的第二连接对象;
创建所述第一进程对应的第一会话对象;
创建所述第二进程对应的第二会话对象;
利用第一进程函数调用第一会话对象函数调用接口,并向所述第一会话对象函数调用接口传入目标参数;所述第一进程函数为所述第一进程对应的函数;
通过所述第一会话对象通知所述第二会话对象进行第二进程函数的调用;所述第二进程函数为所述第二进程对应的函数;
通过所述第一会话对象获取所述第二会话对象返回的函数调用结果;其中,所述函数调用结果为所述第二进程函数返回给所述第二会话对象的调用结果,并且,所述函数调用结果为所述目标参数对应的调用结果;
通过所述第一会话对象将所述函数调用结果返回给所述第一进程函数,以完成所述第一进程与所述第二进程间的过程调用。
2.根据权利要求1所述的本地过程调用方法,其特征在于,所述创建所述第一进程对应的第一会话对象,包括:
利用所述第一进程函数向所述第一连接对象发送会话创建请求;
利用所述第一连接对象创建所述第一进程对应的所述第一会话对象。
3.根据权利要求1所述的本地过程调用方法,其特征在于,所述创建所述第二进程对应的第二会话对象,包括:
利用所述第一连接对象向所述第二连接对象发送会话创建请求,以便所述第二连接对象创建所述第二进程对应的所述第二会话对象。
4.根据权利要求1所述的本地过程调用方法,其特征在于,所述通过所述第一会话对象通知所述第二会话对象进行第二进程函数的调用,包括:
通过所述第一会话对象通知所述第二会话对象进行第二进程函数的调用,其中,所述第一会话对象通过同步对象通知所述第二会话对象进行第二进程函数的调用。
5.根据权利要求4所述的本地过程调用方法,其特征在于,还包括:
通过所述第一会话对象或所述第二会话对创建所述同步对象。
6.根据权利要求1至5任一项所述的本地过程调用方法,其特征在于,所述利用第一进程函数调用第一会话对象函数调用接口,并向所述第一会话对象函数调用接口传入目标参数之后,还包括:
将所述目标参数封装为对应的函数调用数据,利用所述第一会话对象将所述函数调用数据放置于共享内存,以便所述第二会话对象收到所述第二进程函数对应的调用通知后,从所述共享内存中读取所述函数调用数据,并利用所述函数调用数据调用所述第二进程函数。
7.根据权利要求6所述的本地过程调用方法,其特征在于,还包括:
通过所述第一会话对象或所述第二会话对象创建所述共享内存。
8.一种本地过程调用装置,其特征在于,包括:
进程连接对象创建模块,用于创建第一进程与第二进程间的进程连接对象;所述进程连接对象包括所述第一进程对应的第一连接对象以及所述第二进程对应的第二连接对象;
第一会话对象创建模块,用于创建所述第一进程对应的第一会话对象;
第二会话对象创建模块,用于创建所述第二进程对应的第二会话对象;
会话对象接口调用模块,用于利用第一进程函数调用第一会话对象函数调用接口,并向所述第一会话对象函数调用接口传入目标参数;所述第一进程函数为所述第一进程对应的函数;
进程函数调用通知模块,用于通过所述第一会话对象通知所述第二会话对象进行第二进程函数的调用;所述第二进程函数为所述第二进程对应的函数;
函数调用结果获取模块,用于通过所述第一会话对象获取所述第二会话对象返回的函数调用结果;其中,所述函数调用结果为所述第二进程函数返回给所述第二会话对象的调用结果,并且,所述函数调用结果为所述目标参数对应的调用结果;
函数调用结果返回模块,用于通过所述第一会话对象将所述函数调用结果返回给所述第一进程函数,以完成所述第一进程与所述第二进程间的过程调用。
9.一种本地过程调用设备,其特征在于,包括处理器和存储器;其中,
所述存储器,用于保存计算机程序;
所述处理器,用于执行所述计算机程序以实现如权利要求1至7任一项所述的本地过程调用方法。
10.一种计算机可读存储介质,其特征在于,用于保存计算机程序,其中,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述的本地过程调用方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010299179.0A CN111506442B (zh) | 2020-04-16 | 2020-04-16 | 一种本地过程调用方法、装置、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010299179.0A CN111506442B (zh) | 2020-04-16 | 2020-04-16 | 一种本地过程调用方法、装置、设备及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111506442A true CN111506442A (zh) | 2020-08-07 |
CN111506442B CN111506442B (zh) | 2023-05-09 |
Family
ID=71869401
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010299179.0A Active CN111506442B (zh) | 2020-04-16 | 2020-04-16 | 一种本地过程调用方法、装置、设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111506442B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0695993A2 (en) * | 1994-07-27 | 1996-02-07 | International Business Machines Corporation | System and method for interprocess communication |
US20070106778A1 (en) * | 2005-10-27 | 2007-05-10 | Zeldin Paul E | Information and status and statistics messaging method and system for inter-process communication |
US20070214165A1 (en) * | 2006-03-13 | 2007-09-13 | Fujitsu Limited | Computer product, session management method, and session management apparatus |
CN108132872A (zh) * | 2018-01-10 | 2018-06-08 | 成都信息工程大学 | 基于并行超算网格云平台的grapes***优化方法 |
CN110245027A (zh) * | 2018-09-21 | 2019-09-17 | 浙江大华技术股份有限公司 | 一种进程间通信的方法和设备 |
CN110489163A (zh) * | 2018-05-15 | 2019-11-22 | 北京三快在线科技有限公司 | 远程过程调用的识别方法、装置、设备及存储介质 |
CN110532106A (zh) * | 2019-07-16 | 2019-12-03 | 华为技术有限公司 | 进程间的通讯方法、装置、设备和存储介质 |
-
2020
- 2020-04-16 CN CN202010299179.0A patent/CN111506442B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0695993A2 (en) * | 1994-07-27 | 1996-02-07 | International Business Machines Corporation | System and method for interprocess communication |
US20070106778A1 (en) * | 2005-10-27 | 2007-05-10 | Zeldin Paul E | Information and status and statistics messaging method and system for inter-process communication |
US20070214165A1 (en) * | 2006-03-13 | 2007-09-13 | Fujitsu Limited | Computer product, session management method, and session management apparatus |
CN108132872A (zh) * | 2018-01-10 | 2018-06-08 | 成都信息工程大学 | 基于并行超算网格云平台的grapes***优化方法 |
CN110489163A (zh) * | 2018-05-15 | 2019-11-22 | 北京三快在线科技有限公司 | 远程过程调用的识别方法、装置、设备及存储介质 |
CN110245027A (zh) * | 2018-09-21 | 2019-09-17 | 浙江大华技术股份有限公司 | 一种进程间通信的方法和设备 |
CN110532106A (zh) * | 2019-07-16 | 2019-12-03 | 华为技术有限公司 | 进程间的通讯方法、装置、设备和存储介质 |
Non-Patent Citations (1)
Title |
---|
吴涛,张素娟,李伟: "Linux进程调度的数据结构" * |
Also Published As
Publication number | Publication date |
---|---|
CN111506442B (zh) | 2023-05-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8769026B2 (en) | Servicing requests that are issued in a protocol other than the protocol expected by the service | |
CN110032512B (zh) | 一种小程序的调试方法、相关设备及终端 | |
CN111212085B (zh) | 物联网平台同步调用的方法、物联网***和网络设备 | |
CN110413418B (zh) | 缓存同步装置及方法,缓存同步***、电子设备 | |
US20240104513A1 (en) | Schedule sharing method, apparatus, and device | |
CN112835632B (zh) | 一种端能力的调用方法、设备和计算机存储介质 | |
CN108965359B (zh) | 通信方法、通信装置、可读介质和电子设备 | |
WO2022222667A1 (zh) | 应用程序的调用方法、装置、存储介质及电子设备 | |
CN111506442A (zh) | 一种本地过程调用方法、装置、设备及介质 | |
CN110958562B (zh) | 一种调制方式选择方法及近场通信装置、存储介质 | |
CN110290139B (zh) | 消息传输方法及装置 | |
CN102523271B (zh) | 一种终端及其通信方法、*** | |
CN111522605B (zh) | 一种本地过程调用方法、装置、设备及介质 | |
CN114697888B (zh) | 5g消息处理方法、装置及存储介质 | |
CN109669793B (zh) | 中间件进程内对象调用方法 | |
WO2019201111A1 (zh) | 信息处理方法、装置、设备及计算机可读存储介质 | |
CN111581576A (zh) | 基于微服务的开发处理方法、装置及存储介质 | |
CN110661895A (zh) | 一种服务器的网络地址映射方法及网络地址映射设备 | |
CN104346228A (zh) | 共享应用程序的方法及终端 | |
CN100527717C (zh) | 一种针对嵌入式家庭网关的信息显示及交互方法 | |
CN107528769A (zh) | 终端、服务端及即时通讯方法和*** | |
US20090300212A1 (en) | Heuristics processing | |
WO2024022398A1 (zh) | 托管网络的选网信息的获取方法、终端及网络侧设备 | |
WO2023246756A1 (zh) | 算力服务方法、装置、终端及核心网设备 | |
US20230379688A1 (en) | Systems and methods for intelligent selection of roaming modes |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |