利索能及
我要发布
收藏
专利号: 2018112090609
申请人: 武汉斗鱼网络科技有限公司
专利类型:发明专利
专利状态:已下证
更新日期:2024-09-06
缴费截止日期: 暂无
联系人

摘要:

权利要求书:

1.一种进程间通信的方法,其特征在于,包括:在施压机中创建共享文件,所述共享文件用于多个进程间信息的共享,所述多个进程包括一个守护进程和多个施压子进程;

获得所述共享文件对应的文件管道,并根据所述文件管道获得共享内存,所述共享内存为与所述共享文件对应的可读内存;

当所述施压子进程产生第一消息时,对所述第一消息进行序列化处理,获得第二消息,以在所述共享文件中组成完整的消息;其中,所述第二消息为序列化处理后的消息;

将所述第二消息写入所述共享文件中,并更新所述共享内存的写索引字段,以通过所述共享内存将所述第一消息从施压子进程发送给所述守护进程;

其中,每个进程对应一个所述共享内存,各所述共享内存之间相互隔离,所述共享文件对应多个所述共享内存,且所述共享文件与多个所述共享内存之间存在映射关系;

其中,所述获得所述共享文件对应的文件管道,并根据所述文件管道获得共享内存包括:

通过函数randomAccessFile.getChannel()获得所述共享文件对应的文件管道,所述randomAccessFile为用于支持读写随机存取文件的类;

将所述文件管道作为函数MappedByteBufferWrap()的输入,以获得所述共享内存;

其中,所述对所述第一消息进行序列化处理,以在所述共享文件中组成完整的消息包括:

通过函数jdkSerializable()实现所述第一消息的序列化;

通过函数putInt()获得所述第二消息的长度,并根据put()函数在所述共享文件中组成完整的消息。

2.根据权利要求1所述的方法,其特征在于,所述方法还包括:通过函数trylock()获取所述共享文件的文件锁,所述文件锁用于避免所述一个守护进程和多个施压子进程之间的资源冲突。

3.根据权利要求1所述的方法,其特征在于,所述将所述第二消息写入所述共享文件中,并更新所述共享内存的写索引字段包括:通过函数mMappedByteBuffer.position()和mMappedByteBuffer.put()将所述第二消息写入所述共享文件中;

将所述共享内存的写索引字段和所述第二消息的长度的和作为函数setWriteIndex()的输入,以更新所述共享内存的写索引字段。

4.根据权利要求1所述的方法,其特征在于,所述方法还包括:当所述守护进程读取所述第二消息时,对所述共享文件进行压缩并过滤掉所述守护进程读取的字节。

5.根据权利要求4所述的方法,其特征在于,所述对所述共享文件进行压缩并过滤掉所述守护进程读取的字节包括:

通过函数compact()对所述共享文件进行压缩;

将所述共享内存的写索引字段和目标数组的长度的差作为函数setWriteIndex()的输入,以过滤所述读取的字节,所述目标数组用于所述守护进程读取所述第二消息。

6.一种通信装置,其特征在于,包括:创建单元,用于在施压机中创建共享文件,所述共享文件用于多个进程间信息的共享,所述多个进程包括一个守护进程和多个施压子进程;

获得单元,用于获得所述共享文件对应的文件管道,并根据所述文件管道获得共享内存,所述共享内存为与所述共享文件对应的可读内存;

处理单元,用于当所述施压子进程产生第一消息时,对所述第一消息进行序列化处理,获得第二消息,以在所述共享文件中组成完整的消息;

写入单元,用于将所述第二消息写入所述共享文件中,并更新所述共享内存的写索引字段,以通过所述共享内存将所述第一消息从施压子进程发送给所述守护进程;

其中,每个进程对应一个所述共享内存,各所述共享内存之间相互隔离,所述共享文件对应多个所述共享内存,且所述共享文件与多个所述共享内存之间存在映射关系;

其中,所述获得单元具体用于,通过函数randomAccessFile.getChannel()获得所述共享文件对应的文件管道,所述randomAccessFile为用于支持读写随机存取文件的类;将所述文件管道作为函数MappedByteBufferWrap()的输入,以获得所述共享内存;

所述处理单元具体用于,通过函数jdkSerializable()实现所述第一消息的序列化;通过函数putInt()获得所述第二消息的长度,并根据put()函数在所述共享文件中组成完整的消息。

7.一种计算机可读存储介质,包括指令,当其在计算机上运行时,使得计算机执行如权利要求1‑5任意一项所述的方法。