一种进程间通信方法、装置及计算机可读存储介质制造方法及图纸

技术编号:21685883 阅读:34 留言:0更新日期:2019-07-24 14:36
根据本申请提供的进程间通信方法、装置及计算机可读存储介质,控制write_Client进程以及read_Client进程向ServiceManager获取Server进程所申请的缓冲区;在write_Client进程开始数据写操作时,通过write_Client进程将数据源所提供的数据写入至缓冲区;在read_Client进程开始数据读操作时,通过read_Client进程从缓冲区读取数据至数据目的地。通过本申请方案的实施,由服务端负责管理缓冲区,而由读客户端和写客户端分别获取服务端申请的缓冲区,负责缓冲区的读写操作,可良好扩展于数据经常交换的场景,有效降低了进程负载,改善了数据交换的延时。

A Method, Device and Computer Readable Storage Medium for Interprocess Communication

【技术实现步骤摘要】
一种进程间通信方法、装置及计算机可读存储介质
本申请涉及电子
,尤其涉及一种进程间通信方法、装置及计算机可读存储介质。
技术介绍
进程间通信(IPC,InterProcessCommunication)是指两个任意进程之间的通信,由于部分程序在运行时,因为设计的需要必须被设计成多进程程序,从而需要通过进程间通信来在不同进程之间传播或交换信息。目前,进程间通信的客户端Client与服务端Server之间进行消息请求和应答,提供服务的Server主线程需要一直循环检测是否有消息从Client发送过来,若有消息发送过来,则处理该消息,所以若在Server端再增加一线程来写数据,会造成Server进程不堪重负;另外,Client和Server之间的通信是即时通信,即Client向Server发送读请求,Server处理该请求而写数据,但如果此时此刻没有数据,则Server返回空,即没有数据返回,在Client循环读数据为空的概率比较高时,Client和Server进程负载较大。由此可见,目前在进行进程间通信时,会存在进程间数据读写速度不匹配的问题,在数据经常交换的场景下进程负载较大,数据交换产生的延时较高。
技术实现思路
本申请实施例提供一种进程间通信方法、装置及计算机可读存储介质,至少能够解决相关技术中在进行进程间通信时,进程间数据读写速度不匹配,所导致的在数据经常交换的场景下进程负载较大,延时较高的问题。为解决上述问题,本申请实施例第一方面提供一种进程间通信方法,应用于包括写客户端、读客户端、服务端、服务管理者以及缓冲区的进程间通信系统,包括:控制写客户端进程以及读客户端进程均向服务管理者获取服务端进程所申请的缓冲区;在所述写客户端进程开始数据写操作时,通过所述写客户端进程将数据源所提供的数据写入至所述缓冲区;在所述读客户端进程开始数据读操作时,通过所述读客户端进程从所述缓冲区读取数据至数据目的地。本申请实施例第二方面提供一种进程间通信装置,应用于包括写客户端、读客户端、服务端、服务管理者以及缓冲区的进程间通信系统,包括:控制模块,用于控制写客户端进程以及读客户端进程均向服务管理者获取服务端进程所申请的缓冲区;写入模块,用于在所述写客户端进程开始数据写操作时,通过所述写客户端进程将数据源所提供的数据写入至所述缓冲区;读取模块,用于在所述读客户端进程开始数据读操作时,通过所述读客户端进程从所述缓冲区读取数据至数据目的地。本申请实施例第三方面提供一种电子装置,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时,实现上述本申请实施例第一方面提供的进程间通信方法中的各步骤。本申请实施例第四方面提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时,实现上述本申请实施例第一方面提供的进程间通信方法中的各步骤。由上可见,根据本申请方案所提供的进程间通信方法、装置及计算机可读存储介质,控制写客户端write_Client进程以及读客户端read_Client进程均向服务管理者ServiceManager获取服务端Server进程所申请的缓冲区;在write_Client进程开始数据写操作时,通过write_Client进程将数据源所提供的数据写入至缓冲区;在read_Client进程开始数据读操作时,通过read_Client进程从缓冲区读取数据至数据目的地。通过本申请方案的实施,由Server负责管理缓冲区,而由read_Client和write_Client分别获取Service申请的缓冲区,负责缓冲区的读写操作,可良好扩展于数据经常交换的场景,有效降低了进程负载,改善了数据交换的延时。附图说明图1为本申请第一实施例提供的进程间通信方法的基本流程示意图;图2为本申请第一实施例提供的环形缓冲区的示意图;图3为本申请第二实施例提供的进程间通信方法的细化流程示意图;图4为本申请第三实施例提供的进程间通信装置的程序模块示意图;图5为本申请第四实施例提供的电子装置的结构示意图。具体实施方式为使得本申请的专利技术目的、特征、优点能够更加的明显和易懂,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而非全部实施例。基于本申请中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。为了解决相关技术中在进行进程间通信时,进程间数据读写速度不匹配,所导致的在数据经常交换的场景下进程负载较大,延时较高的缺陷,本专利技术第一实施例提供了一种进程间通信方法,应用于包括write_Client、read_Client、Server、ServiceManager以及缓冲区的进程间通信系统,如图1为本实施例提供的进程间通信方法的基本流程图,该进程间通信方法包括以下的步骤:步骤101、控制write_Client进程以及read_Client进程均向ServiceManager获取Server进程所申请的缓冲区。具体的,ServiceManager是一个守护进程,用来管理Server,并向Client提供查询Server接口的能力。Server通过add_service向ServiceManager注册服务,而Client通过get_service传递要获取的服务名称至ServiceManager来获取Server服务。本实施例的框架中的Client包括获取数据的客户端read_Client、存放缓冲区数据的客户端write_Client,从而read_Client和write_Client分别获取Service所申请的缓冲区,负责缓冲区的读写操作,并且Server仅负责管理缓冲区,例如初始化和销毁该缓冲区。应当说明的是,在read_Client和write_Client获取到Server服务之后,write_Client通过write_init初始化缓冲区写操作,以及read_Client通过read_init初始化缓冲区读操作,也即获取缓冲区基地址,方便之后通过读写指针进行读写数据。可选的,进程间通信系统为基于Binder机制的进程间通信系统,缓冲区为共享内存;共享内存被分别映射至write_Client、read_Client以及Server的进程地址空间。具体的,在实际应用中,Linux上的进程间通信机制包括管道、消息队列、共享内存、信号量、Socket、Binder等。作为本实施例的一种优选实施方式,IPC系统为基于Binder机制的IPC系统,Binder机制通过Binder驱动在内核空间拷贝数据,且对每个进程进行有效检测保证安全。其中,本实施例的缓冲区是基于Binder机制的共享内存实现,与Binder通信机制耦合较多。共享内存就是映射一段能被其他进程所访问的内存,这段共享内存由一个进程创建,但多个进程都可以访问。共享内存是最快的IPC方式,它是针对其他进程间通信机制运行效率低而专门设计的。此外,还应当说明的是,该共享内存可以采用匿名共享内存(Ashmem,AnonymousSharedMemory)。可选的,控制write_Client进程以及r本文档来自技高网...

【技术保护点】
1.一种进程间通信方法,应用于包括写客户端、读客户端、服务端、服务管理者以及缓冲区的进程间通信系统,其特征在于,包括:控制写客户端进程以及读客户端进程均向服务管理者获取服务端进程所申请的缓冲区;在所述写客户端进程开始数据写操作时,通过所述写客户端进程将数据源所提供的数据写入至所述缓冲区;在所述读客户端进程开始数据读操作时,通过所述读客户端进程从所述缓冲区读取数据至数据目的地。

【技术特征摘要】
1.一种进程间通信方法,应用于包括写客户端、读客户端、服务端、服务管理者以及缓冲区的进程间通信系统,其特征在于,包括:控制写客户端进程以及读客户端进程均向服务管理者获取服务端进程所申请的缓冲区;在所述写客户端进程开始数据写操作时,通过所述写客户端进程将数据源所提供的数据写入至所述缓冲区;在所述读客户端进程开始数据读操作时,通过所述读客户端进程从所述缓冲区读取数据至数据目的地。2.根据权利要求1所述的进程间通信方法,其特征在于,所述进程间通信系统为基于Binder机制的进程间通信系统,所述缓冲区为共享内存;所述共享内存被分别映射至所述写客户端、读客户端以及服务端的进程地址空间。3.根据权利要求1所述的进程间通信方法,其特征在于,所述缓冲区为环形缓冲区;所述在所述写客户端进程开始数据写操作时,通过所述写客户端进程将数据源所提供的数据写入至所述缓冲区包括:在所述写客户端进程开始数据写操作时,判断数据源所提供的数据的长度是否大于所述环形缓冲区后端的连续可写区域的长度;若是,则将所述数据源所提供的数据截断为第一数据和第二数据,通过所述写客户端进程将所述第一数据写入所述环形缓冲区后端的连续可写区域,并将所述第二数据在所述环形缓冲区头部的预设连续可写区域进行写入;若否,则通过所述写客户端进程直接将所述数据源所提供的数据在所述环形缓冲区后端的连续可写区域进行写入;所述在所述读客户端进程开始数据读操作时,通过所述读客户端进程从所述缓冲区读取数据至数据目的地包括:在所述读客户端进程开始数据读操作时,判断所需读取至数据目的地的数据的长度是否大于所述环形缓冲区后端的连续可读区域的长度;若是,则通过所述读客户端进程从所述连续可读区域读取第三数据,以及从所述环形缓冲区头部的预设连续可读区域读取第四数据至数据目的地;所述所需读取至数据目的地的数据包括第三数据和第四数据;若否,则通过所述读客户端进程直接从所述环形缓冲区后端的连续可读区域读取所述所需读取至数据目的地的数据至所述数据目的地。4.根据权利要求1所述的进程间通信方法,其特征在于,所述缓冲区配置有互斥锁;所述通过所述写客户端进程将数据源所提供的数据写入至所述缓冲区之前,还包括:为所述...

【专利技术属性】
技术研发人员:方攀陈岩
申请(专利权)人:OPPO广东移动通信有限公司
类型:发明
国别省市:广东,44

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

1