CN111506442B - 一种本地过程调用方法、装置、设备及介质 - Google Patents

一种本地过程调用方法、装置、设备及介质 Download PDF

Info

Publication number
CN111506442B
CN111506442B CN202010299179.0A CN202010299179A CN111506442B CN 111506442 B CN111506442 B CN 111506442B CN 202010299179 A CN202010299179 A CN 202010299179A CN 111506442 B CN111506442 B CN 111506442B
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.)
Active
Application number
CN202010299179.0A
Other languages
English (en)
Other versions
CN111506442A (zh
Inventor
吴涛
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Appeon Technology Shenzhen Co ltd
Original Assignee
Appeon Technology Shenzhen Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Appeon Technology Shenzhen Co ltd filed Critical Appeon Technology Shenzhen Co ltd
Priority to CN202010299179.0A priority Critical patent/CN111506442B/zh
Publication of CN111506442A publication Critical patent/CN111506442A/zh
Application granted granted Critical
Publication of CN111506442B publication Critical patent/CN111506442B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram 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 (8)

1.一种本地过程调用方法,其特征在于,包括:
创建第一进程与第二进程间的进程连接对象;所述进程连接对象包括所述第一进程对应的第一连接对象以及所述第二进程对应的第二连接对象;
创建所述第一进程对应的第一会话对象;
创建所述第二进程对应的第二会话对象;
利用第一进程函数调用第一会话对象函数调用接口,并向所述第一会话对象函数调用接口传入目标参数;所述第一进程函数为所述第一进程对应的函数;
通过所述第一会话对象通知所述第二会话对象进行第二进程函数的调用;所述第二进程函数为所述第二进程对应的函数;
通过所述第一会话对象获取所述第二会话对象返回的函数调用结果;其中,所述函数调用结果为所述第二进程函数返回给所述第二会话对象的调用结果,并且,所述函数调用结果为所述目标参数对应的调用结果;
通过所述第一会话对象将所述函数调用结果返回给所述第一进程函数,以完成所述第一进程与所述第二进程间的过程调用;
其中,所述创建所述第一进程对应的第一会话对象,包括:利用所述第一进程函数向所述第一连接对象发送会话创建请求;利用所述第一连接对象创建所述第一进程对应的所述第一会话对象;
并且,所述创建所述第二进程对应的第二会话对象,包括:利用所述第一连接对象向所述第二连接对象发送会话创建请求,以便所述第二连接对象创建所述第二进程对应的所述第二会话对象。
2.根据权利要求1所述的本地过程调用方法,其特征在于,所述通过所述第一会话对象通知所述第二会话对象进行第二进程函数的调用,包括:
通过所述第一会话对象通知所述第二会话对象进行第二进程函数的调用,其中,所述第一会话对象通过同步对象通知所述第二会话对象进行第二进程函数的调用。
3.根据权利要求2所述的本地过程调用方法,其特征在于,还包括:
通过所述第一会话对象或所述第二会话对创建所述同步对象。
4.根据权利要求1至3任一项所述的本地过程调用方法,其特征在于,所述利用第一进程函数调用第一会话对象函数调用接口,并向所述第一会话对象函数调用接口传入目标参数之后,还包括:
将所述目标参数封装为对应的函数调用数据,利用所述第一会话对象将所述函数调用数据放置于共享内存,以便所述第二会话对象收到所述第二进程函数对应的调用通知后,从所述共享内存中读取所述函数调用数据,并利用所述函数调用数据调用所述第二进程函数。
5.根据权利要求4所述的本地过程调用方法,其特征在于,还包括:
通过所述第一会话对象或所述第二会话对象创建所述共享内存。
6.一种本地过程调用装置,其特征在于,包括:
进程连接对象创建模块,用于创建第一进程与第二进程间的进程连接对象;所述进程连接对象包括所述第一进程对应的第一连接对象以及所述第二进程对应的第二连接对象;
第一会话对象创建模块,用于创建所述第一进程对应的第一会话对象;
第二会话对象创建模块,用于创建所述第二进程对应的第二会话对象;
会话对象接口调用模块,用于利用第一进程函数调用第一会话对象函数调用接口,并向所述第一会话对象函数调用接口传入目标参数;所述第一进程函数为所述第一进程对应的函数;
进程函数调用通知模块,用于通过所述第一会话对象通知所述第二会话对象进行第二进程函数的调用;所述第二进程函数为所述第二进程对应的函数;
函数调用结果获取模块,用于通过所述第一会话对象获取所述第二会话对象返回的函数调用结果;其中,所述函数调用结果为所述第二进程函数返回给所述第二会话对象的调用结果,并且,所述函数调用结果为所述目标参数对应的调用结果;
函数调用结果返回模块,用于通过所述第一会话对象将所述函数调用结果返回给所述第一进程函数,以完成所述第一进程与所述第二进程间的过程调用;
其中,所述第一会话对象创建模块,具体用于利用所述第一进程函数向所述第一连接对象发送会话创建请求;利用所述第一连接对象创建所述第一进程对应的所述第一会话对象;
所述第二会话对象创建模块,具体用于利用所述第一连接对象向所述第二连接对象发送会话创建请求,以便所述第二连接对象创建所述第二进程对应的所述第二会话对象。
7.一种本地过程调用设备,其特征在于,包括处理器和存储器;其中,
所述存储器,用于保存计算机程序;
所述处理器,用于执行所述计算机程序以实现如权利要求1至5任一项所述的本地过程调用方法。
8.一种计算机可读存储介质,其特征在于,用于保存计算机程序,其中,所述计算机程序被处理器执行时实现如权利要求1至5任一项所述的本地过程调用方法。
CN202010299179.0A 2020-04-16 2020-04-16 一种本地过程调用方法、装置、设备及介质 Active CN111506442B (zh)

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 CN111506442A (zh) 2020-08-07
CN111506442B true 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 (5)

* Cited by examiner, † Cited by third party
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
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 华为技术有限公司 进程间的通讯方法、装置、设备和存储介质

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070106778A1 (en) * 2005-10-27 2007-05-10 Zeldin Paul E Information and status and statistics messaging method and system for inter-process communication
JP4641506B2 (ja) * 2006-03-13 2011-03-02 富士通株式会社 セッション管理プログラム、セッション管理方法およびセッション管理装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
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
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)

* Cited by examiner, † Cited by third party
Title
吴涛,张素娟,李伟.Linux进程调度的数据结构.河北理工学院学报.(第02期),全文. *

Also Published As

Publication number Publication date
CN111506442A (zh) 2020-08-07

Similar Documents

Publication Publication Date Title
RU2523964C2 (ru) Способ межпроцессного взаимодействия между разными приложениями в мобильном терминале и соответствующее устройство
CN110995797B (zh) 多层b/s与c/s混合式软件***、各层之间异步实时通信方法
US20240119969A1 (en) Video processing method and apparatus, electronic device and storage medium
CN111435338A (zh) 多智能硬件统一管控方法、平台、***、设备及存储介质
CN110582998A (zh) 群组的通信方法及装置、计算机存储介质、计算机设备
CN109684114A (zh) 基于iOS***的消息分发方法、装置、终端和介质
CN111240858A (zh) 事件调度方法及组件
CN112835632B (zh) 一种端能力的调用方法、设备和计算机存储介质
CN106357654B (zh) 远程过程调用方法、装置及通信***
CN108965359B (zh) 通信方法、通信装置、可读介质和电子设备
CN111506442B (zh) 一种本地过程调用方法、装置、设备及介质
CN110958562B (zh) 一种调制方式选择方法及近场通信装置、存储介质
CN108108170A (zh) 一种组件的解耦合方法及***
CN112181681A (zh) 一种远程调用方法、装置、计算机设备及存储介质
WO2019201111A1 (zh) 信息处理方法、装置、设备及计算机可读存储介质
CN111581576A (zh) 基于微服务的开发处理方法、装置及存储介质
CN110661895A (zh) 一种服务器的网络地址映射方法及网络地址映射设备
CN113542217B (zh) 一种服务订阅***
CN111522605B (zh) 一种本地过程调用方法、装置、设备及介质
CN109669793B (zh) 中间件进程内对象调用方法
CN110008033B (zh) 一种和客户端进行通信的方法及电子设备
CN111741075A (zh) 通信连接方法、车辆远程连接***及连接设备
US20090300212A1 (en) Heuristics processing
CN117201577B (zh) 基于pisa的跨平台api和spi的通讯方法和***
CN107528769A (zh) 终端、服务端及即时通讯方法和***

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