CN117076149A - 一种进程间通讯方法及相关设备 - Google Patents

一种进程间通讯方法及相关设备 Download PDF

Info

Publication number
CN117076149A
CN117076149A CN202310769465.2A CN202310769465A CN117076149A CN 117076149 A CN117076149 A CN 117076149A CN 202310769465 A CN202310769465 A CN 202310769465A CN 117076149 A CN117076149 A CN 117076149A
Authority
CN
China
Prior art keywords
type
inter
service
communication
proxy
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.)
Pending
Application number
CN202310769465.2A
Other languages
English (en)
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.)
Shenzhen Coocaa Network Technology Co Ltd
Original Assignee
Shenzhen Coocaa Network Technology 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 Shenzhen Coocaa Network Technology Co Ltd filed Critical Shenzhen Coocaa Network Technology Co Ltd
Priority to CN202310769465.2A priority Critical patent/CN117076149A/zh
Publication of CN117076149A publication Critical patent/CN117076149A/zh
Pending legal-status Critical Current

Links

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/546Message passing systems or structures, e.g. queues
    • 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/542Event management; Broadcasting; Multicasting; Notifications
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Computer And Data Communications (AREA)

Abstract

本发明公开一种进程间通讯方法,包括步骤:第一类进程申请代理,所述代理为封装了与第二类进程相互通信的机制的本地对象;第一类进程通过代理与第二类进程通信,并通过代理调用第二类进程的资源。可以看出,本发明的方法通过代理进行通讯,而非两个进程之间直接互相通信,通讯对象不固定在两个进程之间,各个进程无需耦合在同一个文件中,不必再耦合一部分代码,采用该方法的程序代码具有较好的模块化和可扩展性,且进程能够像调用本地对象一样实现远程函数的调用,直接实现功能的使用。

Description

一种进程间通讯方法及相关设备
技术领域
本发明涉及终端设备应用领域,尤其涉及的是一种进程间通讯方法及相关设备。
背景技术
现有技术中,目前进程间通讯的方法有很多种,消息队列,信号量,共享内存等,这些通讯方式各有各的优点。
其中,共享内存是两个线程之间共享同一部分的内存地址空间,由于信息的传递不再涉及内核,无需内核系统调用来传递信息,因此具有较快的传输速度。
消息队列是消息的链表,是存放在内核中并由消息队列标识符标识,消息队列是随内核持续的,只有在内核重启或者显示删除一个消息队列时,该消息队列才会真正被删除。消息队列允许不同进程将格式化的数据流以消息队列形式发送给任意进程,对消息队列具有操作权限的进程都可以完成对消息队列的操作控制,通过使用消息类型,进程可以按顺序读信息,或为消息安排优先级顺序。
但现有的各种通讯方法均为进程之间相互通信,其具有较大的耦合性,通讯不仅只能建立在固定的两个进程之间,也使得相互通信的两个进程需要耦合一部分代码。
发明内容
本发明的目的是提供一种进程间通讯方法及相关设备,旨在解决现有的进程间通讯的方法耦合性过强的问题。
本发明解决技术问题所采用的技术方案如下:
本发明提供一种进程间通讯方法,包括步骤:
第一类进程申请代理,所述代理为封装了与第二类进程相互通信的机制的本地对象;
第一类进程通过代理与第二类进程通信,并通过代理调用第二类进程的资源。
进一步地,其特征在于,所述第一类进程为多个,所述多个第一类进程通过同一代理与第二类进程连接。
进一步地,所述封装了与第二类进程相互通信的机制具体是第一类进程传递信息给第二类进程时,代理将第一类进程的信息打包封装后发送给第二类进程,第二类进程传递信息给第一类进程时,代理负责将获取的信息解包,并将解包的结果返回给第一类进程。
进一步地,所述第二类进程通过回调函数向第一类进程传输数据。
进一步地,第二类进程启动时进入循环状态等待第一类进程的请求,第一类进程对第二类进程的回调函数进行监听,第一类进程监听到回调函数后,根据监听的结果进行相应的处理。
进一步地,所述第二类进程具体是提供服务的服务进程,所述第一类进程具体是调用服务的用户进程。
进一步地,所述服务进程注册服务管理进程,服务进程将所有功能和消息注册到服务管理进程中,用户进程通过服务管理进程查找所需调用的服务。
进一步地,所述用户进程通过服务管理进程查找所需调用的服务,具体是通过字符串检索的方式查找服务对应的字符串,从而检索对应的服务。
此外,为实现上述目的,本发明还提供一种终端,所述终端包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的进程间通讯程序,所述进程间通讯程序被所述处理器执行时实现如上所述的进程间通讯方法的步骤。
此外,为实现上述目的,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质存储有进程间通讯程序,所述进程间通讯程序被处理器执行时实现如上所述的进程间通讯方法的步骤。
本发明采用上述技术方案具有以下效果:
本发明的方法通过代理进行通讯,而非两个进程之间直接互相通信,通讯对象不固定在两个进程之间,各个进程无需耦合在同一个文件中,不必再耦合一部分代码,采用该方法的程序代码具有较好的模块化和可扩展性,且进程能够像调用本地对象一样实现远程函数的调用,直接实现功能的使用。
附图说明
图1是本发明较佳实施例中进程间通讯方法的步骤流程图;
图2是本发明终端的较佳实施例的运行环境示意图。
具体实施方式
为使本发明的目的、技术方案及优点更加清楚、明确,以下参照附图并举实施例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
实施例一
请参见图1,图1是本发明较佳实施例中进程间通讯方法的步骤流程图。
实施例一公开一种进程间通讯方法及相关设备,包括步骤
S1、第一类进程申请代理,所述代理为封装了与第二类进程相互通信的机制的本地对象。
S2、第一类进程通过代理与第二类进程通信,并通过代理调用第二类进程的资源。
其中,第一类进程和第二类进程为同一终端的两个进程,所述进程(Process)是指在计算机中运行的程序的执行实例,它是操作系统分配资源和管理任务的基本单位,每个进程都有自己的内存空间、执行状态、程序计数器、堆栈和其他资源,由于进程之间是相互独立的,彼此之间不共享内存空间,只能通过进程间通信(IPC)机制来进行信息交换。
所述对象(Object)是一个具体的实体,具有属性和行为,它是类(Class)的实例化,通过类来定义对象的结构和行为,对象具有封装性、继承性和多态性的特性,可以通过消息传递的方式与其他对象进行交互,一个对象可以属于一个或多个进程,它可以在不同的进程中被创建、访问和使用。
其中,代理是第一进程创建的本地对象,其封装了与第二类进程相互通信的机制,并提供了本地对象的调用接口,第一进程可以很方便的通过代理来访问第二类进程的对象。
所述封装了与第二类进程相互通信的机制,具体是第一类进程传递信息给第二类进程时,代理将第一类进程的信息打包封装后发送给第二类进程,第二类进程传递信息给第一类进程时,代理负责将获取的信息解包,并将解包的结果返回给第一类进程,从而代理作为第一类进程和第二类进程之间的中介角色,隐藏第一类进程和第二类进程之间的通信细节,以使得第一类进程可以像调用本地对象一样调用第二类进程的资源。
值得说明的是,为了减少资源占用,提高效率,多个第一类进程可以共享同一个代理对象,即多个第一类进程通过同一个代理与第二类进程连接。
具体而言,第一类进程申请的代理,可以是第一类进程根据需要创建的本地代理对象,也可以是事先建立好的代理,例如其他第一类进程创建的代理对象。
现有技术进程间相互通讯的GAM方法,是进程间互发消息进行通讯,第一类进程与第二类进程之间进行通讯,或第一类进程需要调用第二类进程的资源时,需要将调用请求封装成对应的消息发送往第二类进程,第二类进程受到消息后执行相应的函数,再将结果封装成消息返回,导致多个进程耦合在同一个文件中,需要耦合一部分代码,不利于相关功能的开发与实现,该文件调用对应进程的资源,实现对应的功能。相比之下,本发明的方法通过代理进行通讯,各个进程无需耦合在同一个文件中,不必再耦合一部分代码,采用该方法的程序代码具有较好的模块化和可扩展性,此外进程还能够像调用本地对象一样实现远程函数的调用,直接实现功能的使用。
本实施例中,第二类进程具体是提供服务的服务进程,资源具体是第二类进程提供的服务,第一类进程具体是调用服务的用户进程,当用户进程向服务进程请求调用服务时,代理对象会将请求打包成标准的调用消息,并将该消息传递给驱动程序,由驱动程序将其发送到服务进程中的服务对象。服务进程接收到消息并解包后,会执行相应的操作,并将结果打包成返回消息,发送回来给用户进程的代理对象,代理对象再将消息解包,并将结果返回给调用者。
具体而言,服务端定义暴露的接口,包括接口名称、接口方法、参数类型以及返回值类型等信息;
在服务端实现接口方法,处理客户端发送的请求,并返回响应给客户端;
在客户端创建对象,并调用接口发送请求到服务端,等待服务端响应;
在客户端接收服务端返回的响应消息,并处理响应数据。
本实施例的服务进程定义了两个服务函数和一个事件回调,事件回调主要用于服务进程向用户进程传递信息,用户进程接收到信息后执行一些菜单方面的处理,例如隐藏菜单、显示菜单等操作。
服务进程启动时进入循环状态等待用户进程的请求,用户进程则对服务进程的事件回调函数进行监听,用户进程监听到回调函数后,根据监听的结果进行相应的处理。
为了方便用户进程获取服务的具体内容,以及增强服务进程的可扩展性和灵活性,服务进程注册一个新进程服务管理进程,服务进程将所有功能和消息注册到服务管理进程中,用户进程通过服务管理进程查找所需调用的服务,具体而言,用户进程通过字符串检索的方式查找服务对应的字符串,从而检索对应的服务,检索到对应的服务后,用户进程通过代理与服务进程建立连接,调用对应的服务,服务进程通过回调函数返回相应的结果,即用户进程需要申请一个代理,用户进程通过代理与服务进程建立联系,然后启动服务进程,等待用户进程的连接,用户进程一旦有连接过来,则用户进程和服务进程通过代理建立一个连接,然后用户进程远程调用服务进程的功能,服务进程通过回调函数将执行结果反馈到用户进程,实现了对服务进程功能的远程调用。
本实施例中,所述第一类进程通过代理与第二类进程连接,具体是第一类进程通过代理向内核发送消息,内核接收到消息发往第二类进程,完成进程间的交换。
实施例二
请参见图2,基于上述方法,本发明还提供了一种终端,所述终端包括:存储器10、处理器20及存储在所述存储器10上并可在所述处理器20上运行的进程间通讯程序,所述进程间通讯程序被所述处理器20执行时实现如上所述的进程间通讯方法的步骤。
所述终端在一些实施例中可以是采用代码控制的嵌入式设备,例如手机、电脑、电视等设备。所述存储器20在一些实施例中可以是所述终端的内部存储单元,例如终端的硬盘或内存。所述存储器20在另一些实施例中也可以是所述终端的外部存储设备,例如所述终端上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(SecureDigital,SD)卡,闪存卡(Flash Card)等。进一步地,所述存储器20还可以既包括所述终端的内部存储单元也包括外部存储设备。所述存储器20用于存储安装于所述终端的应用软件及各类数据,例如所述安装终端的程序代码等。所述存储器20还可以用于暂时地存储已经输出或者将要输出的数据。在一实施例中,存储器20上存储有进程间通讯程序,该进程间通讯程序可被处理器10所执行,从而实现本申请中的进程间通讯方法。
所述处理器10在一些实施例中可以是一中央处理器(Central Processing Unit,CPU),微处理器或其他数据处理芯片,用于运行所述存储器20中存储的程序代码或处理数据,例如执行所述进程间通讯方法等。
实施例三
本实施例提供一种存储介质,其特征在于,所述计算机可读存储介质存储有进程间通讯程序,所述进程间通讯程序被处理器执行时实现如上所述的进程间通讯方法的步骤。
综上所述,针对现有的各种通讯方法均为进程之间相互通信,其具有较大的耦合性,通讯不仅只能建立在固定的两个进程之间,也使得相互通信的两个进程需要耦合一部分代码的问题,本发明的方法通过代理进行通讯,而非两个进程之间直接互相通信,通讯对象不固定在两个进程之间,各个进程无需耦合在同一个文件中,不必再耦合一部分代码,采用该方法的程序代码具有较好的模块化和可扩展性,且进程能够像调用本地对象一样实现远程函数的调用,直接实现功能的使用。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者终端中还存在另外的相同要素。
当然,本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关硬件(如处理器,控制器等)来完成,所述的程序可存储于一计算机可读取的存储介质中,所述程序在执行时可包括如上述各方法实施例的流程。其中所述的存储介质可为存储器、磁碟、光盘等。
应当理解的是,本发明的应用不限于上述的举例,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,所有这些改进和变换都应属于本发明所附权利要求的保护范围。

Claims (10)

1.一种进程间通讯方法,其特征在于,包括步骤:
第一类进程申请代理,所述代理为封装了与第二类进程相互通信的机制的本地对象;
第一类进程通过代理与第二类进程通信,并通过代理调用第二类进程的资源。
2.根据权利要求1所述的一种进程间通讯方法,其特征在于,所述第一类进程为多个,所述多个第一类进程通过同一代理与第二类进程连接。
3.根据权利要求1所述的一种进程间通讯方法,其特征在于,所述封装了与第二类进程相互通信的机制具体是第一类进程传递信息给第二类进程时,代理将第一类进程的信息打包封装后发送给第二类进程,第二类进程传递信息给第一类进程时,代理负责将获取的信息解包,并将解包的结果返回给第一类进程。
4.根据权利要求1所述的一种进程间通讯方法,其特征在于,所述第二类进程通过回调函数向第一类进程传输数据。
5.根据权利要求4所述的一种进程间通讯方法,其特征在于,第二类进程启动时进入循环状态等待第一类进程的请求,第一类进程对第二类进程的回调函数进行监听,第一类进程监听到回调函数后,根据监听的结果进行相应的处理。
6.根据权利要求1所述的一种进程间通讯方法,其特征在于,所述第二类进程具体是提供服务的服务进程,所述第一类进程具体是调用服务的用户进程。
7.根据权利要求6所述的一种进程间通讯方法,其特征在于,所述服务进程注册服务管理进程,服务进程将所有功能和消息注册到服务管理进程中,用户进程通过服务管理进程查找所需调用的服务。
8.根据权利要求7所述的一种进程间通讯方法,其特征在于,所述用户进程通过服务管理进程查找所需调用的服务,具体是通过字符串检索的方式查找服务对应的字符串,从而检索对应的服务。
9.一种终端,其特征在于,所述终端包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的进程间通讯程序,所述进程间通讯程序被所述处理器执行时实现如权利要求1-8任一项所述的进程间通讯方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有进程间通讯程序,所述进程间通讯程序被处理器执行时实现如权利要求1-8任一项所述的进程间通讯方法的步骤。
CN202310769465.2A 2023-06-27 2023-06-27 一种进程间通讯方法及相关设备 Pending CN117076149A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310769465.2A CN117076149A (zh) 2023-06-27 2023-06-27 一种进程间通讯方法及相关设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310769465.2A CN117076149A (zh) 2023-06-27 2023-06-27 一种进程间通讯方法及相关设备

Publications (1)

Publication Number Publication Date
CN117076149A true CN117076149A (zh) 2023-11-17

Family

ID=88712247

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310769465.2A Pending CN117076149A (zh) 2023-06-27 2023-06-27 一种进程间通讯方法及相关设备

Country Status (1)

Country Link
CN (1) CN117076149A (zh)

Similar Documents

Publication Publication Date Title
CN107729139B (zh) 一种并发获取资源的方法和装置
CN108572818B (zh) 一种用户界面渲染方法及装置
CN108572965B (zh) 一种资源加载方法及装置
US7877091B2 (en) Method and system for executing a container managed application on a processing device
CN110413822B (zh) 离线图像结构化分析方法、装置、系统和存储介质
US10303529B2 (en) Protocol for communication of data structures
CN111930525B (zh) Gpu资源使用方法、电子设备及计算机可读介质
EP1195677A1 (en) Dynamic class loading
CN112596931B (zh) 一种跨进程通信方法、装置、电子设备及存储介质
CN112685148A (zh) 海量终端的异步通信方法、装置、计算机设备和存储介质
US6957427B1 (en) Remote object activation in a distributed system
CN112835632A (zh) 一种端能力的调用方法、设备和计算机存储介质
CN109683992B (zh) 用于管理对象的方法和装置
WO2023151503A1 (zh) 句柄管理或通信方法、电子设备、存储介质及程序产品
CN117076149A (zh) 一种进程间通讯方法及相关设备
CN113645260A (zh) 业务重试方法、装置、存储介质及电子设备
CN114327404A (zh) 一种文件处理方法、装置、电子设备及计算机可读介质
CN113626001A (zh) 一种基于脚本的api动态编排方法及装置
CN115373869A (zh) 基于aar的进程处理方法、装置及电子设备
US6934953B2 (en) Deferred procedure call in interface description language
CN111857964A (zh) 一种虚拟机can口数据透传到物理机can口设备的方法和设备
CN112165529A (zh) 一种低成本跨网络数据交换的方法、装置、设备和介质
CN110245027B (zh) 一种进程间通信的方法和设备
CN115378792B (zh) 告警处理方法、装置及存储介质
CN113032010A (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