[发明专利]进程间通信IPC的实现方法和装置有效
申请号: | 201810646525.0 | 申请日: | 2018-06-21 |
公开(公告)号: | CN108984317B | 公开(公告)日: | 2021-07-13 |
发明(设计)人: | 赵肖勇;康高杰 | 申请(专利权)人: | 北京奇虎科技有限公司 |
主分类号: | G06F9/54 | 分类号: | G06F9/54 |
代理公司: | 北京恒博知识产权代理有限公司 11528 | 代理人: | 范胜祥 |
地址: | 100088 北京市西城区新*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 进程 通信 ipc 实现 方法 装置 | ||
本发明公开了进程间通信IPC的实现方法和装置。所述方法包括:在用于进程间通信的共享内存中注册与自身对应的IPC对象;将消息发送给与通信目标对应的IPC对象,和/或通过与自身对应的IPC对象接收通信目标发送的消息。该技术方案的有益效果在于,应用程序的所有IPC可以在一块共享内存中进行,不需要如现有技术中每进行一次IPC就新申请一块共享内存,能够解决效率低下并且容易带来内存管理的复杂度增加的问题;并且一个进程的多个线程都可以在这块共享内存中实例化自己的IPC对象,使得通信互不干扰并且效率提升。
技术领域
本发明涉计算机技术领域,具体涉及进程间通信IPC的实现方法和装置。
背景技术
IPC(Inter-Process Communication,进程间通信)在目前的应用程序中被广泛使用,一个简单的例子就是许多程序都有一个与主窗口对应的进程和一个与任务栏中托盘对应的进程,二者的交互是非常频繁的。现有技术中的IPC实现方式,效率并不高,需要占用大量内存,需要进行改进。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的进程间通信IPC的实现方法和装置。
依据本发明的一个方面,提供了一种进程间通信IPC的实现方法,包括:
在用于进程间通信的共享内存中注册与自身对应的IPC对象;
将消息发送给与通信目标对应的IPC对象,和/或通过与自身对应的IPC对象接收通信目标发送的消息。
可选地,所述在用于进程间通信的共享内存中注册与自身对应的IPC对象包括:
获取与自身对应的IPC对象的唯一标识;
根据所述唯一标识和自身预设的回调函数,注册与自身对应的IPC对象。
可选地,所述获取与自身对应的IPC对象的唯一标识包括:
根据自身所属进程的类型,获取随机分配的唯一标识,或者获取预留的唯一标识。
可选地,所述在用于进程间通信的共享内存中注册与自身对应的IPC对象包括:
判断是否已存在用于进程间通信的共享内存;
是则使用该用于进程间通信的共享内存,否则申请用于进程间通信的共享内存。
可选地,所述申请用于进程间通信的共享内存包括:
使用伙伴算法管理所述共享内存;
在所述共享内存中设置头部区域,以存放所述伙伴算法的头部信息和各IPC对象的共用信息。
可选地,所述在用于进程间通信的共享内存中注册与自身对应的IPC对象包括:
判断所述共享内存中是否存在与该IPC对象对应的预留空间,是则将所述IPC对象的注册信息写入所述预留空间,否则在所述共享内存中为该IPC对象新分配空间。
可选地,所述将消息发送给与通信目标对应的IPC对象包括:
判断通信目标对应的IPC对象是否已在所述共享内存中注册;
是则将所述消息写入通信目标对应的IPC对象的消息队列;否则判断所述共享内存中是否存在与通信目标对应的IPC对象对应的预留空间,是则将所述消息写入与该预留空间对应的消息队列,否则在所述共享内存中为所述通信目标对应的IPC对象申请预留空间,将所述消息写入与该预留空间对应的消息队列。
可选地,该方法还包括:为发送的消息设置存活时间;
若发送的消息未在存活时间内被通信目标获取,则从相应的消息队列中删除该发送的消息。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京奇虎科技有限公司,未经北京奇虎科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810646525.0/2.html,转载请声明来源钻瓜专利网。