[发明专利]基于共享内存的多进程间通信的方法及装置有效
| 申请号: | 202310044073.X | 申请日: | 2023-01-29 |
| 公开(公告)号: | CN115794443B | 公开(公告)日: | 2023-05-23 |
| 发明(设计)人: | 朱时宇;李勇;戚纪纲 | 申请(专利权)人: | 北京万里红科技有限公司 |
| 主分类号: | G06F9/54 | 分类号: | G06F9/54 |
| 代理公司: | 北京维正专利代理有限公司 11508 | 代理人: | 朱鹏程 |
| 地址: | 100089 北京市*** | 国省代码: | 北京;11 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 基于 共享 内存 进程 通信 方法 装置 | ||
本申请涉及一种基于共享内存的多进程间通信的方法及装置,方法包括:根据从通道管理器获取模块编号和所述实体编号对每个实体对应的通道进行编号,得到通道的通道编号;利用所述通道编号向所述通道管理器进行对应通道的注册;接收通道管理器向系统广播的通道列表;根据目的通道的所述通道编号从通道列表中查找所述目的通道的地址,根据查找到的地址向所述目的通道进行读、写、删除操作。本申请不需要进行地址的逐一遍历,从而使每个通道数据的增加、删除、查询时间复杂度都是O(1),有效提高进程间通信效率,降低延迟。
技术领域
本申请涉及进程通信技术领域,尤其是涉及一种基于共享内存的多进程间通信的方法及装置。
背景技术
在同一个系统内多进程间的通信方式有很多,常见的有管道、共享内存和Socket,而在性能要求比较高的系统中,对进程间通用方式的选择需要综合考虑稳定性、吞吐量和传输时延等方面;经过实验对比分析,从稳定性、吞吐量和传输时延方面出共享内存都优于管道和Socket,是最佳的进程间通信方式。
但是在多进程通过共享内存进行通信时,由于进程数量较多,在向其它进程通道进行数据写或读时需要遍历大量其它进程地址,增加了数据增加、数据删除、数据查询时间复杂度,从而降低通信效率,提高通信时延。
发明内容
为了解决数据增加、数据删除、数据查询时间复杂度高,通信效率低,通信时延高的问题,本申请提供了基于共享内存的多进程间通信的方法及装置。
第一方面,本申请提供的一种基于共享内存的多进程间通信的方法采用如下的技术方案:
一种基于共享内存的多进程间通信的方法,包括:
对通信层面模块下所有实体进行编号得到实体编号;
从通道管理器获取模块编号,利用所述模块编号和所述实体编号对每个实体对应的通道进行编号,得到通道的通道编号;其中,所述通道编号包括所述模块编号和所述实体编号;
将所述通道编号以通道注册请求的形式发送至所述通道管理器,进行与所述通道编号对应通道的注册;
接收所述通道管理器向系统中所有在线进程广播的通道列表;其中,所述通道列表包括每个元素为所述通道编号的二维数组,每个所述通道编号标识一个通道的地址;所述通道管理器根据所述通道注册请求更新所述二维数组中的所述通道编号和对应的地址;
利用目的通道的所述通道编号从所述通道列表中查找所述通道编号对应的地址,根据查找到的地址向所述目的通道进行读、写、删除操作。
优选的,所述模块编号和所述实体编号从预设数值开始编号。
优选的,所述将所述通道编号以通道注册请求的形式发送至所述通道管理器包括:
将所述通道编号中所述实体编号为预设数值的通道配置为管理通道;
通过所述管理通道向所述通道管理器发送所述通道注册请求;其中,所述通道注册请求包括除管理通道以外的所有所述通道编号。
优选的,还包括:
当监测到退出请求时,触发向所述通道管理器发送通道注销请求,并在接收到所述通道管理器的应答时开始执行进程退出流程。
第二方面,本申请提供的一种基于共享内存的多进程间通信的方法采用如下的技术方案:
一种基于共享内存的多进程间通信的方法,包括:
对系统下所有进程的通信层面模块进行唯一编号,得到对应的模块编号,并在进程请求获取所述模块编号时发送给对应进程;
接收进程发送的通道注册请求,根据所述通道注册请求为每个通道编号分配通道的数据存储空间,并利用所述通道注册请求中对应的通道编号标识所述数据存储空间的地址;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京万里红科技有限公司,未经北京万里红科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202310044073.X/2.html,转载请声明来源钻瓜专利网。





