[发明专利]一种进程间通信的方法及相关装置有效
申请号: | 201811209060.9 | 申请日: | 2018-10-17 |
公开(公告)号: | CN109358974B | 公开(公告)日: | 2021-05-28 |
发明(设计)人: | 付得龙 | 申请(专利权)人: | 武汉斗鱼网络科技有限公司 |
主分类号: | G06F9/54 | 分类号: | G06F9/54;G06F16/176 |
代理公司: | 北京众达德权知识产权代理有限公司 11570 | 代理人: | 徐松 |
地址: | 430000 湖北省武汉市东湖开*** | 国省代码: | 湖北;42 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 进程 通信 方法 相关 装置 | ||
1.一种进程间通信的方法,其特征在于,包括:
在施压机中创建共享文件,所述共享文件用于多个进程间信息的共享,所述多个进程包括一个守护进程和多个施压子进程;
获得所述共享文件对应的文件管道,并根据所述文件管道获得共享内存,所述共享内存为与所述共享文件对应的可读内存;
当所述施压子进程产生第一消息时,对所述第一消息进行序列化处理,获得第二消息,以在所述共享文件中组成完整的消息;其中,所述第二消息为序列化处理后的消息;
将所述第二消息写入所述共享文件中,并更新所述共享内存的写索引字段,以通过所述共享内存将所述第一消息从施压子进程发送给所述守护进程;
其中,每个进程对应一个所述共享内存,各所述共享内存之间相互隔离,所述共享文件对应多个所述共享内存,且所述共享文件与多个所述共享内存之间存在映射关系;
其中,所述获得所述共享文件对应的文件管道,并根据所述文件管道获得共享内存包括:
通过函数randomAccessFile.getChannel()获得所述共享文件对应的文件管道,所述randomAccessFile为用于支持读写随机存取文件的类;
将所述文件管道作为函数MappedByteBufferWrap()的输入,以获得所述共享内存;
其中,所述对所述第一消息进行序列化处理,以在所述共享文件中组成完整的消息包括:
通过函数jdkSerializable()实现所述第一消息的序列化;
通过函数putInt()获得所述第二消息的长度,并根据put()函数在所述共享文件中组成完整的消息。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
通过函数trylock()获取所述共享文件的文件锁,所述文件锁用于避免所述一个守护进程和多个施压子进程之间的资源冲突。
3.根据权利要求1所述的方法,其特征在于,所述将所述第二消息写入所述共享文件中,并更新所述共享内存的写索引字段包括:
通过函数mMappedByteBuffer.position()和mMappedByteBuffer.put()将所述第二消息写入所述共享文件中;
将所述共享内存的写索引字段和所述第二消息的长度的和作为函数setWriteIndex()的输入,以更新所述共享内存的写索引字段。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当所述守护进程读取所述第二消息时,对所述共享文件进行压缩并过滤掉所述守护进程读取的字节。
5.根据权利要求4所述的方法,其特征在于,所述对所述共享文件进行压缩并过滤掉所述守护进程读取的字节包括:
通过函数compact()对所述共享文件进行压缩;
将所述共享内存的写索引字段和目标数组的长度的差作为函数setWriteIndex()的输入,以过滤所述读取的字节,所述目标数组用于所述守护进程读取所述第二消息。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于武汉斗鱼网络科技有限公司,未经武汉斗鱼网络科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201811209060.9/1.html,转载请声明来源钻瓜专利网。