进行通信的方法和通信设备技术

技术编号:19543019 阅读:29 留言:0更新日期:2018-11-24 20:29
本发明专利技术提供了一种进行通信的方法和通信设备,属于计算机技术领域。所述方法包括:在将第一消息写入消息队列时,根据所述第一消息的数据量,确定所述第一消息占用所述消息队列中数据块的数目;将所述消息队列对应的写偏移更新为当前对应所述消息队列存储的写偏移与所述数目之和,其中,所述写偏移用于指示当前已经写入数据的数据块的最大索引号;根据更新后的写偏移和所述数目,确定所述第一消息占用所述消息队列中的数据块;将所述第一消息写入确定出的数据块。采用本发明专利技术,可以节约存储空间。

Method of communication and communication equipment

The invention provides a communication method and a communication device, belonging to the field of computer technology. The method includes: determining the number of data blocks in the message queue occupied by the first message according to the data amount of the first message when the first message is written to the message queue; updating the corresponding write offset of the message queue to the sum of the current write offset and the number stored in the message queue; The write offset is used to indicate the maximum index number of the data block that has been currently written to the data; according to the updated write offset and the number, it is determined that the first message occupies the data block in the message queue; and the first message is written to the determined data block. By adopting the invention, the storage space can be saved.

【技术实现步骤摘要】
进行通信的方法和通信设备
本专利技术涉及计算机
,特别涉及一种进行通信的方法和装置。
技术介绍
随着计算机技术的发展,在进程间或线程间通信时,常常采用消息队列的方式进行通信。相关技术中,在进程间通信时,发送消息的进程属于写进程,接收消息的进程属于读进程,在共享内存中可以创建一个消息队列,并设置消息队列中每个数据块所能存储数据的数据量大于或等于发送的消息的最大数据量。消息队列包括头部、索引区和数据区,头部区用于保存队列的总长度和每个数据块所能存储数据的数据量,索引区用于保存数据区的数据块的索引号,索引号与数据块一一对应,数据区包括多个数据块,用于保存数据。写进程可以将消息写入数据块,读进程可以周期性检测有没有新的消息写入数据块,如果有,则可以读取数据块中的消息。这样,就可以实现进程间通信。在实现本专利技术的过程中,专利技术人发现相关技术至少存在以下问题:由于消息队列中每个数据块所能存储数据的数据量大于或等于发送的消息的最大数据量,所以对于数据量较小的消息仅占用一个数据块的一小部分存储空间,从而在消息的数据量大小不一的情况下,会导致浪费大量的存储空间。
技术实现思路
为了解决相关技术的问题,本专利技术实施例提供了一种进行通信的方法和通信设备。所述技术方案如下:第一方面,提供了一种进行通信的方法,所述方法包括:在将第一消息写入消息队列时,根据所述第一消息的数据量,确定所述第一消息占用所述消息队列中数据块的数目;将所述消息队列对应的写偏移更新为当前对应所述消息队列存储的写偏移与所述数目之和,其中,所述写偏移用于指示当前已经写入数据的数据块的最大索引号;根据更新后的写偏移和所述数目,确定所述第一消息占用所述消息队列中的数据块;将所述第一消息写入确定出的数据块。可选的,所述将所述第一消息写入确定出的数据块,包括:在所述消息队列中,按照确定出的数据块的索引号从大到小的顺序,依次将所述第一消息写入所述确定出的数据块。可选的,所述方法还包括:当所述确定出的数据块中第一数据块写入完成时,更新所述第一数据块的索引号对应的状态标识为完成标识。可选的,所述方法还包括:当所述确定出的数据块中第二数据块写入完成时,根据所述确定出的数据块的索引号,存储所述第二数据块的索引号对应的序号。可选的,所述方法还包括:创建消息队列,其中,所述消息队列包括头部区、读写监控区、索引区和数据区,所述读写监控区用于存储所述写偏移和读偏移,所述读偏移用于指示当前已经读出数据的数据块的最大索引号,所述数据区包括至少一个数据块。第二方面,提供了一种进行通信的方法,所述方法包括:获取当前消息队列对应的读偏移和写偏移,其中,所述写偏移用于指示当前已经写入数据的数据块的最大索引号,所述读偏移用于指示当前已经读出数据的数据块的最大索引号;如果所述读偏移小于所述写偏移,则根据所述读偏移,确定未读取第二消息占用所述消息队列中的数据块和所述第二消息的数据量,并将所述读偏移更新为所述读偏移与确定出的数据块的数目之和;根据所述第二消息的数据量,从所述确定出的数据块中,读取所述第二消息。可选的,所述根据所述读偏移,确定未读取第二消息占用所述消息队列中的数据块和所述第二消息的数据量,包括:根据所述读偏移,确定与所述读偏移对应的数据块相邻的下一个数据块的索引号;根据所述索引号,确定未读取第二消息占用所述消息队列中的数据块和所述第二消息的数据量。可选的,所述根据所述索引号,确定未读取第二消息占用所述消息队列中的数据块和所述第二消息的数据量,包括:获取所述索引号对应的状态标识,如果所述状态标识是完成标识,则根据所述索引号,确定未读取第二消息占用所述消息队列中的数据块和所述第二消息的数据量;如果所述状态标识不是完成标识,且在预设时长之内所述状态标识被更新为完成标识,则根据所述索引号,确定未读取第二消息占用所述消息队列中的数据块和所述第二消息的数据量。可选的,所述如果所述状态标识是完成标识,则根据所述索引号,确定未读取第二消息占用所述消息队列中的数据块和所述第二消息的数据量,包括:如果所述状态标识是完成标识,且所述索引号对应的序号为预设数值,则根据所述索引号,确定未读取第二消息占用所述消息队列中的数据块和所述第二消息的数据量;所述如果所述状态标识不是完成标识,且在预设时长之内所述状态标识被更新为完成标识,则根据所述索引号,确定未读取第二消息占用所述消息队列中的数据块和所述第二消息的数据量,包括:所述如果所述状态标识不是完成标识,且所述索引号对应的序号为预设数值,且在预设时长之内所述状态标识被更新为完成标识,则根据所述索引号,确定未读取第二消息占用所述消息队列中的数据块和所述第二消息的数据量。可选的,所述方法还包括:如果所述状态标识不是完成标识,且所述序号为所述预设数值,且在预设时长内所述状态标识未更新为完成标识,则放弃读取所述第二消息。可选的,所述根据所述索引号,确定未读取第二消息占用所述消息队列中的数据块和所述第二消息的数据量,包括:获取所述索引号对应的未读取第二消息的数据量;根据所述第二消息的数据量,确定所述第二消息占用所述消息队列中数据块的数目;根据所述索引号和所述数目,确定所述第二消息占用所述消息队列中的数据块。第三方面,提供了一种通信设备,所述通信设备,包括:第一确定模块,用于在将第一消息写入消息队列时,根据所述第一消息的数据量,确定所述第一消息占用所述消息队列中数据块的数目;更新模块,用于将所述消息队列对应的写偏移更新为当前对应所述消息队列存储的写偏移与所述数目之和,其中,所述写偏移用于指示当前已经写入数据的数据块的最大索引号;第二确定模块,用于根据更新后的写偏移和所述数目,确定所述第一消息占用所述消息队列中的数据块;写入模块,用于将所述第一消息写入确定出的数据块。可选的,所述写入模块,用于:在所述消息队列中,按照确定出的数据块的索引号从大到小的顺序,依次将所述第一消息写入所述确定出的数据块。可选的,所述更新模块,还用于:当所述确定出的数据块中第一数据块写入完成时,更新所述第一数据块的索引号对应的状态标识为完成标识。可选的,所述通信设备还包括:存储模块,用于当所述确定出的数据块中第二数据块写入完成时,根据所述确定出的数据块的索引号,存储所述第二数据块的索引号对应的序号。可选的,所述通信设备还包括:创建模块,用于创建消息队列,其中,所述消息队列包括头部区、读写监控区、索引区和数据区,所述读写监控区用于存储所述写偏移和读偏移,所述读偏移用于指示当前已经读出数据的数据块的最大索引号,所述数据区包括至少一个数据块。第四方面,提供了一种通信设备,所述通信设备,包括:获取模块,用于获取当前消息队列对应的读偏移和写偏移,其中,所述写偏移用于指示当前已经写入数据的数据块的最大索引号,所述读偏移用于指示当前已经读出数据的数据块的最大索引号;确定模块,用于如果所述读偏移小于所述写偏移,则根据所述读偏移,确定未读取第二消息占用所述消息队列中的数据块和所述第二消息的数据量,并将所述读偏移更新为所述读偏移与确定出的数据块的数目之和;读取模块,用于根据所述第二消息的数据量,从所述确定出的数据块中,读取所述第二消息。可选的,所述确定模块,用于:根据所述读偏移,确定与所述读偏移对应的数据块相邻的下一个数据块本文档来自技高网...

【技术保护点】
1.一种进行通信的方法,其特征在于,所述方法包括:在将第一消息写入消息队列时,根据所述第一消息的数据量,确定所述第一消息占用所述消息队列中数据块的数目;将所述消息队列对应的写偏移更新为当前对应所述消息队列存储的写偏移与所述数目之和,其中,所述写偏移用于指示当前已经写入数据的数据块的最大索引号;根据更新后的写偏移和所述数目,确定所述第一消息占用所述消息队列中的数据块;将所述第一消息写入确定出的数据块。

【技术特征摘要】
1.一种进行通信的方法,其特征在于,所述方法包括:在将第一消息写入消息队列时,根据所述第一消息的数据量,确定所述第一消息占用所述消息队列中数据块的数目;将所述消息队列对应的写偏移更新为当前对应所述消息队列存储的写偏移与所述数目之和,其中,所述写偏移用于指示当前已经写入数据的数据块的最大索引号;根据更新后的写偏移和所述数目,确定所述第一消息占用所述消息队列中的数据块;将所述第一消息写入确定出的数据块。2.根据权利要求1所述的方法,其特征在于,所述将所述第一消息写入确定出的数据块,包括:在所述消息队列中,按照确定出的数据块的索引号从大到小的顺序,依次将所述第一消息写入所述确定出的数据块。3.根据权利要求2所述的方法,其特征在于,所述方法还包括:当所述确定出的数据块中第一数据块写入完成时,更新所述第一数据块的索引号对应的状态标识为完成标识。4.根据权利要求2所述的方法,其特征在于,所述方法还包括:当所述确定出的数据块中第二数据块写入完成时,根据所述确定出的数据块的索引号,存储所述第二数据块的索引号对应的序号。5.根据权利要求1至4任一所述的方法,其特征在于,所述方法还包括:创建消息队列,其中,所述消息队列包括头部区、读写监控区、索引区和数据区,所述读写监控区用于存储所述写偏移和读偏移,所述读偏移用于指示当前已经读出数据的数据块的最大索引号,所述数据区包括至少一个数据块。6.一种进行通信的方法,其特征在于,所述方法包括:获取当前消息队列对应的读偏移和写偏移,其中,所述写偏移用于指示当前已经写入数据的数据块的最大索引号,所述读偏移用于指示当前已经读出数据的数据块的最大索引号;如果所述读偏移小于所述写偏移,则根据所述读偏移,确定未读取第二消息占用所述消息队列中的数据块和所述第二消息的数据量,并将所述读偏移更新为所述读偏移与确定出的数据块的数目之和;根据所述第二消息的数据量,从所述确定出的数据块中,读取所述第二消息。7.根据权利要求6所述的方法,其特征在于,所述根据所述读偏移,确定未读取第二消息占用所述消息队列中的数据块和所述第二消息的数据量,包括:根据所述读偏移,确定与所述读偏移对应的数据块相邻的下一个数据块的索引号;根据所述索引号,确定未读取第二消息占用所述消息队列中的数据块和所述第二消息的数据量。8.根据权利要求7所述的方法,其特征在于,所述根据所述索引号,确定未读取第二消息占用所述消息队列中的数据块和所述第二消息的数据量,包括:获取所述索引号对应的状态标识,如果所述状态标识是完成标识,则根据所述索引号,确定未读取第二消息占用所述消息队列中的数据块和所述第二消息的数据量;如果所述状态标识不是完成标识,且在预设时长之内所述状态标识被更新为完成标识,则根据所述索引号,确定未读取第二消息占用所述消息队列中的数据块和所述第二消息的数据量。9.根据权利要求8所述的方法,其特征在于,所述如果所述状态标识是完成标识,则根据所述索引号,确定未读取第二消息占用所述消息队列中的数据块和所述第二消息的数据量,包括:如果所述状态标识是完成标识,且所述索引号对应的序号为预设数值,则根据所述索引号,确定未读取第二消息占用所述消息队列中的数据块和所述第二消息的数据量;所述如果所述状态标识不是完成标识,且在预设时长之内所述状态标识被更新为完成标识,则根据所述索引号,确定未读取第二消息占用所述消息队列中的数据块和所述第二消息的数据量,包括:所述如果所述状态标识不是完成标识,且所述索引号对应的序号为预设数值,且在预设时长之内所述状态标识被更新为完成标识,则根据所述索引号,确定未读取第二消息占用所述消息队列中的数据块和所述第二消息的数据量。10.根据权利要求9所述的方法,其特征在于,所述方法还包括:如果所述状态标识不是完成标识,且所述序号为所述预设数值,且在预设时长内所述状态标识未更新为完成标识,则放弃读取所述第二消息。11.根据权利要求7至9任一所述的方法,其特征在于,所述根据所述索引号,确定未读取第二消息占用所述消息队列中的数据块和所述第二消息的数据量,包括:获取所述索引号对应的未读取第二消息的数据量;根据所述第二消息的数据量,确定所述第二消息占用所述消息队列中数据块的数目;根据所述索引号和所述数目,确定所述第二消息占用所述消息队列中的数据块。12.一种通信设备,其特征...

【专利技术属性】
技术研发人员:王磊李革委
申请(专利权)人:腾讯音乐娱乐科技深圳有限公司
类型:发明
国别省市:广东,44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1