[发明专利]进程间通信IPC的实现方法和装置有效
申请号: | 201810646525.0 | 申请日: | 2018-06-21 |
公开(公告)号: | CN108984317B | 公开(公告)日: | 2021-07-13 |
发明(设计)人: | 赵肖勇;康高杰 | 申请(专利权)人: | 北京奇虎科技有限公司 |
主分类号: | G06F9/54 | 分类号: | G06F9/54 |
代理公司: | 北京恒博知识产权代理有限公司 11528 | 代理人: | 范胜祥 |
地址: | 100088 北京市西城区新*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 进程 通信 ipc 实现 方法 装置 | ||
1.一种进程间通信IPC的实现方法,包括:
在用于进程间通信的共享内存中注册与自身对应的IPC对象;
获取待传递参数的参数类型;
根据所述参数类型,从预设的数据封装模板中选取出匹配的数据封装模板;
将待传递参数按匹配的数据封装模板封装为对指定类型的数据对象;
将所述指定类型的数据对象按预设方法序列化为二进制数据,将所述二进制数据作为待发送的消息;
将消息发送给与通信目标对应的IPC对象,和/或通过与自身对应的IPC对象接收通信目标发送的消息。
2.如权利要求1所述的方法,其中,所述在用于进程间通信的共享内存中注册与自身对应的IPC对象包括:
获取与自身对应的IPC对象的唯一标识;
根据所述唯一标识和自身预设的回调函数,注册与自身对应的IPC对象。
3.如权利要求2所述的方法,其中,所述获取与自身对应的IPC对象的唯一标识包括:
根据自身所属进程的类型,获取随机分配的唯一标识,或者获取预留的唯一标识。
4.如权利要求1所述的方法,其中,所述在用于进程间通信的共享内存中注册与自身对应的IPC对象包括:
判断是否已存在用于进程间通信的共享内存;
是则使用该用于进程间通信的共享内存,否则申请用于进程间通信的共享内存。
5.如权利要求4所述的方法,其中,所述申请用于进程间通信的共享内存包括:
使用伙伴算法管理所述共享内存;
在所述共享内存中设置头部区域,以存放所述伙伴算法的头部信息和各IPC对象的共用信息。
6.如权利要求5所述的方法,其中,所述在用于进程间通信的共享内存中注册与自身对应的IPC对象包括:
判断所述共享内存中是否存在与该IPC对象对应的预留空间,是则将所述IPC对象的注册信息写入所述预留空间,否则在所述共享内存中为该IPC对象新分配空间。
7.如权利要求6所述的方法,其中,所述将消息发送给与通信目标对应的IPC对象包括:
判断通信目标对应的IPC对象是否已在所述共享内存中注册;
是则将所述消息写入通信目标对应的IPC对象的消息队列;否则判断所述共享内存中是否存在与通信目标对应的IPC对象对应的预留空间,是则将所述消息写入与该预留空间对应的消息队列,否则在所述共享内存中为所述通信目标对应的IPC对象申请预留空间,将所述消息写入与该预留空间对应的消息队列。
8.如权利要求7所述的方法,其中,该方法还包括:为发送的消息设置存活时间;
若发送的消息未在存活时间内被通信目标获取,则从相应的消息队列中删除该发送的消息。
9.如权利要求1所述的方法,其中,所述预设方法是利用包含嵌套模板的可变参数模板实现的。
10.如权利要求1所述的方法,其中,所述根据所述参数类型,从预设的数据封装模板中选取出匹配的数据封装模板包括:
利用类型萃取确定待传递参数中各参数的参数类型;
所述将待传递参数按匹配的数据封装模板封装为对指定类型的数据对象包括:
若参数类型为标量类型,则直接封装参数的值;若参数类型为结构体,则建立对参数的引用,对所述引用进行封装。
11.如权利要求1所述的方法,其中,所述参数类型包括如下的一种或多种:
基本类型、自定义类、智能指针、vector、map。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京奇虎科技有限公司,未经北京奇虎科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810646525.0/1.html,转载请声明来源钻瓜专利网。