一种基于循环队列的数据传输方法及系统的制作方法

文档序号:10534744阅读:262来源:国知局
一种基于循环队列的数据传输方法及系统的制作方法
【专利摘要】本申请公开了一种基于循环队列的数据传输方法及系统,创建循环队列;所述循环队列中设置有多个出列指针;为每个数据读取端分配至少一个对应的所述出列指针;控制每个所述数据读取端通过对应的所述出列指针读取所述循环队列中存储的数据。可见,由于本申请提供的循环队列中设置有多个出列指针,因此在需要采用一对多的数据传输方式时,可以为每个数据读取端分配至少一个对应的出列指针,控制每个数据读取端通过对应的出列指针读取循环队列中存储的数据,从而可以利用一个循环队列实现一对多的数据传输,无需将数据发送端所发送的数据复制到多个循环队列中,可以减少对数据存储空间的占用,拓宽循环队列的应用范围。
【专利说明】
一种基于循环队列的数据传输方法及系统
技术领域
[0001]本发明涉及数据通信技术领域,尤其涉及一种基于循环队列的数据传输方法及系统。
【背景技术】
[0002]为了充分利用向量空间,克服假溢出,通常将向量空间想象为一个首尾相接的圆环,并称这种向量为循环向量。存储在循环向量的队列被称为循环队列(Circular Queue)。
[0003]现有的循环队列中,有一个数据入列端和一个数据出列端,它允许在数据入列端通过入列指针进行数据存储,而在数据出列端通过出列指针进行数据读取,采用的是基于先入先出原则的线性模式来实现数据传输。
[0004]但是,参见图1所示,现有的一个循环队列只能在一对一(一个数据发送端对应一个数据读取端)的数据传输中应用,一个数据发送端通过数据入列端的入列指针发送数据,一个数据读取端通过数据出列端的出列指针读取数据,当需要在一对多(一个数据发送端对应多个数据读取端)的数据传输中应用时,就需要为多个数据读取端设置多个循环队列,并将数据发送端所发送的数据复制到多个循环队列中进行传输,这需要占用比较多的数据存储空间,而且使得基于循环队列的一对多的数据传输实现起来比较复杂,导致循环队列的应用受限。

【发明内容】

[0005]本发明提供一种基于循环队列的数据传输方法及系统,以简化基于循环队列的一对多的数据传输方式,并减少对数据存储空间的占用,拓宽循环队列的应用范围。
[0006]为解决上述技术问题,本申请提供以下技术方案:
[0007]—种基于循环队列的数据传输方法,包括:
[0008]创建循环队列;所述循环队列中设置有多个出列指针;
[0009]为每个数据读取端分配至少一个对应的所述出列指针;
[0010]控制每个所述数据读取端通过对应的所述出列指针读取所述循环队列中存储的数据。
[0011]优选地,所述循环队列中设置有至少一个入列指针,且每个数据发送端分别对应一个所述入列指针。
[0012]优选地,还包括:
[0013]按照待发送数据的数据类型,控制每个所述数据发送端通过对应的所述入列指针将所述待发送数据发送到所述循环队列中的指定位置进行存储。
[0014]优选地,所述控制每个所述数据读取端通过对应的所述出列指针读取所述循环队列中存储的数据,包括:
[0015]根据每个所述数据读取端的需求数据的数据类型,确定每个所述数据读取端的所述需求数据在所述循环队列中的存储位置;
[0016]控制每个所述数据读取端通过对应的所述出列指针在所述循环队列中对应的所述存储位置读取所述需求数据。
[0017]—种基于循环队列的数据传输系统,包括:
[0018]创建模块,用于创建循环队列;所述循环队列中设置有多个出列指针;
[0019]分配模块,用于为每个数据读取端分配至少一个对应的所述出列指针;
[0020]控制模块,用于控制每个所述数据读取端通过对应的所述出列指针读取所述循环队列中存储的数据。
[0021]优选地,所述循环队列中设置有至少一个入列指针,且每个数据发送端分别对应一个所述入列指针。
[0022]优选地,所述控制模块还用于:
[0023]按照待发送数据的数据类型,控制每个所述数据发送端通过对应的所述入列指针将所述待发送数据发送到所述循环队列中的指定位置进行存储。
[0024]优选地,所述控制模块,包括:
[0025]确定单元,用于根据每个所述数据读取端的需求数据的数据类型,确定每个所述数据读取端的所述需求数据在所述循环队列中的存储位置;
[0026]控制单元,用于控制每个所述数据读取端通过对应的所述出列指针在所述循环队列中对应的所述存储位置读取所述需求数据。
[0027]由上可见,本申请提供的一种基于循环队列的数据传输方法及系统,创建循环队列;所述循环队列中设置有多个出列指针;为每个数据读取端分配至少一个对应的所述出列指针;控制每个所述数据读取端通过对应的所述出列指针读取所述循环队列中存储的数据。可见,由于本申请提供的循环队列中设置有多个出列指针,因此在需要采用一对多的数据传输方式时,可以为每个数据读取端分配至少一个对应的出列指针,控制每个数据读取端通过对应的出列指针读取循环队列中存储的数据,从而可以利用一个循环队列实现一对多的数据传输,无需将数据发送端所发送的数据复制到多个循环队列中,可以减少对数据存储空间的占用,拓宽循环队列的应用范围。
【附图说明】
[0028]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0029]图1为现有技术中的循环队列的应用场景示意图;
[0030]图2为本发明提供的一种基于循环队列的数据传输方法的一个实施例的流程示意图;
[0031]图3为本发明提供的一种基于循环队列的数据传输方法的另一个实施例的流程示意图;
[0032]图4为本申请提供的一种循环队列的应用场景示意图;
[0033]图5为本发明提供的一种基于循环队列的数据传输系统的一个实施例的结构示意图;
[0034]图6为本发明提供的一种基于循环队列的数据传输系统的另一个实施例的结构示意图。
【具体实施方式】
[0035]为使得本发明的发明目的、特征、优点能够更加的明显和易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而非全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0036]下面结合附图对本申请的技术方案进行详细说明:
[0037]图2为本发明提供的一种基于循环队列的数据传输方法的一个实施例的流程示意图。
[0038]参照图2所示,本申请实施例提供的基于循环队列的数据传输方法,应用于基于循环队列的数据传输系统中,包括如下步骤:
[0039]SlOl:创建循环队列;所述循环队列中设置有多个出列指针;
[0040]现有的循环队列是一种运算受限的线性表,只有一个数据入列端和一个数据出列端,它只允许在表的一端进行数据插入,而在另一端进行数据删除,具有先入先出的线性模式,所以具有一定的局限性,只能实现数据一对一的传输,无法在需要数据一对多的应用中使用。
[0041 ]而在本申请实施例中,创建的循环队列是包括多个出列指针的,且结构中还可以包括标识队列属性(空、满和大小)的元素。
[0042]S102:为每个数据读取端分配至少一个对应的所述出列指针;
[0043]在本申请实施例中,循环队列中包括多个出列指针,且循环队列中的每个出列指针分别对应有不同的数据存储位置,在初始化上述循环队列结构时,可以为每个数据读取端分配至少一个对应的所述出列指针,然后将数据读取端绑定到分配的出列指针上。
[0044]S103:控制每个所述数据读取端通过对应的所述出列指针读取所述循环队列中存储的数据。
[0045]由于每一数据读取端对数据的需求不同,其数据的读取通过在初始化过程中绑定的对应出列指针进行,出列指针取数据时会针对数据读取端的需要对数据进行筛选,这样某种数据读取端就可以按自己的需要在循环队列中读取相应的存储位置的数据。每个出列指针去取的数据可以是一个或者多个,并且可以按照一定的时间间隔循环去取。后台可以理解为按照排序进行的。
[0046]由于有多个出列指针,从而使得每个数据读取端都可以在同一时间去取自己对应的出列指针指向的存储位置的数据。在数据读取完成之后,可通过挪动自己对应的出列指针丢弃那些已经做过判断的数据,下次再取数据的时候无需重复判断。
[0047]由上可见,本申请实施例提供的一种基于循环队列的数据传输方法,创建循环队列;所述循环队列中设置有多个出列指针;为每个数据读取端分配至少一个对应的所述出列指针;控制每个所述数据读取端通过对应的所述出列指针读取所述循环队列中存储的数据。可见,由于本申请提供的循环队列中设置有多个出列指针,因此在需要采用一对多的数据传输方式时,可以为每个数据读取端分配至少一个对应的出列指针,控制每个数据读取端通过对应的出列指针读取循环队列中存储的数据,从而可以利用一个循环队列实现一对多的数据传输,无需将数据发送端所发送的数据复制到多个循环队列中,可以减少对数据存储空间的占用,拓宽循环队列的应用范围。
[0048]本申请实施例基于循环队列进行一对多的数据传输的应用扩展,能够有效的解决一对多的数据传递和处理问题,减少了后续数据处理的复杂度,减少了数据拷贝的次数,节约了软件代码的空间和时间,节约了成本。
[0049]图3为本发明提供的一种基于循环队列的数据传输方法的另一个实施例的流程示意图。
[0050]参照图3所示,本申请实施例提供的基于循环队列的数据传输方法,应用于基于循环队列的数据传输系统中,包括如下步骤:
[0051]S201:创建循环队列;所述循环队列中设置有至少一个入列指针和多个出列指针;
[0052]在本申请实施例中,循环队列由至少一个入列指针和多个出列指针构成,且结构中包括标识队列属性(空、满和大小)的元素。
[0053]S202:为每个数据发送端分配一个所述对应的入列指针,为每个数据读取端分配至少一个对应的所述出列指针;
[0054]图4为本申请提供的一种循环队列的应用场景示意图。参照图4所示,以包括一个入列指针和多个出列指针的循环队列为例,在初始化时,要初始化并分配循环队列中的数据存储位置,并针对单个入列指针和多个出列指针,为数据发送端分配一个所述入列指针,为每个数据读取端分配至少一个对应的所述出列指针,同时将数据读取端绑定到分配的对应出列指针上,并且可以设置好入列指针和出列指针指向的最开始的数据存储位置的起始位置。
[0055]S203:按照待发送数据的数据类型,控制每个所述数据发送端通过对应的所述入列指针将所述待发送数据发送到所述循环队列中的指定位置进行存储;
[0056]在本申请实施例中,每个数据发送端在发送数据时,都可以根据实际需要存放的待发送的数据类型,通过对应的所述入列指针将所述待发送数据发送到所述循环队列中的指定位置进行存储,这里的指定位置是指各个入列指针指向的数据存储位置。
[0057]S204:在所述数据读取端读取所述循环队列中存储的数据时,根据每个所述数据读取端的需求数据的数据类型,确定每个所述数据读取端的所述需求数据在所述循环队列中的存储位置;
[0058]S205:控制每个所述数据读取端通过对应的所述出列指针在所述循环队列中对应的所述存储位置读取所述需求数据。
[0059]由于每一数据读取端对数据的需求不同,其数据的读取通过在初始化过程中绑定的对应出列指针进行,出列指针取数据时会针对数据读取端的需要对数据进行刷选,这样某种数据读取端就可以按自己的需要在循环队列中读取与自己的需求数据的数据类型相对应的存储位置的数据。每个出列指针去取的数据可以是一个或者多个,并且可以按照一定的时间间隔循环去取。后台可以理解为按照排序进行的。由于有多个出列指针,从而使得每种数据读取端都可以在同一时间去取自己对应的出列指针指向的存储位置的数据。在数据读取完成之后,可通过挪动自己对应的出列指针丢弃那些已经做过判断的数据,下次再取数据时就无需重复判断了。
[0060]由上可见,本申请实施例提供的循环队列中设置有至少一个入列指针和多个出列指针,因此在需要采用一对多甚至多对多的数据传输方式时,可以为每个数据发送端分配至少一个对应的入列指针,为每个数据读取端分配至少一个对应的出列指针,控制每个数据发送端通过对应的入列指针将待发送数据存储到循环队列中的指定位置,每个数据读取端通过对应的出列指针读取循环队列中的对应存储位置存储的数据,从而可以利用一个循环队列实现一对多甚至多对多的数据传输,无需将数据发送端所发送的数据复制到多个循环队列中,可以减少对数据存储空间的占用,拓宽循环队列的应用范围。
[0061]图5为本发明提供的一种基于循环队列的数据传输系统的一个实施例的结构示意图。
[0062]参照图5所示,本申请实施例提供的基于循环队列的数据传输系统,包括:
[0063]创建模块I,用于创建循环队列;所述循环队列中设置有多个出列指针;
[0064]分配模块2,用于为每个数据读取端分配至少一个对应的所述出列指针;
[0065]控制模块3,用于控制每个所述数据读取端通过对应的所述出列指针读取所述循环队列中存储的数据。
[0066]由上可见,本申请实施例提供的一种基于循环队列的数据传输系统,创建循环队列;所述循环队列中设置有多个出列指针;为每个数据读取端分配至少一个对应的所述出列指针;控制每个所述数据读取端通过对应的所述出列指针读取所述循环队列中存储的数据。可见,由于本申请提供的循环队列中设置有多个出列指针,因此在需要采用一对多的数据传输方式时,可以为每个数据读取端分配至少一个对应的出列指针,控制每个数据读取端通过对应的出列指针读取循环队列中存储的数据,从而可以利用一个循环队列实现一对多的数据传输,无需将数据发送端所发送的数据复制到多个循环队列中,可以减少对数据存储空间的占用,拓宽循环队列的应用范围。
[0067]需要说明的是,本实施例的基于循环队列的数据传输系统可以采用上述方法实施例中的基于循环队列的数据传输方法,可以用于实现上述方法实施例中的全部技术方案,其各个功能模块的功能可以根据上述方法实施例中的方法具体实现,其具体实现过程可参照上述实施例中的相关描述,此处不再赘述。
[0068]图6为本发明提供的一种基于循环队列的数据传输系统的另一个实施例的结构示意图。
[0069]参照图6所示,本申请实施例提供的基于循环队列的数据传输系统,包括:
[0070]创建模块I,用于创建循环队列;所述循环队列中设置有至少一个入列指针和多个出列指针;
[0071]分配模块2,用于为每个数据发送端分配一个所述入列指针,为每个数据读取端分配至少一个对应的所述出列指针;
[0072]控制模块3,用于按照待发送数据的数据类型,控制每个所述数据发送端通过对应的所述入列指针将所述待发送数据发送到所述循环队列中的指定位置进行存储;并控制每个所述数据读取端通过对应的所述出列指针读取所述循环队列中存储的数据。
[0073]优选地,所述控制模块3,包括:
[0074]确定单元31,用于根据每个所述数据读取端的需求数据的数据类型,确定每个所述数据读取端的所述需求数据在所述循环队列中的存储位置;
[0075]控制单元32,用于控制每个所述数据读取端通过对应的所述出列指针在所述循环队列中对应的所述存储位置读取所述需求数据。
[0076]由上可见,本申请实施例提供的循环队列中设置有至少一个入列指针和多个出列指针,因此在需要采用一对多甚至多对多的数据传输方式时,可以为每个数据发送端分配至少一个对应的入列指针,为每个数据读取端分配至少一个对应的出列指针,控制每个数据发送端通过对应的入列指针将待发送数据存储到循环队列中的指定位置,每个数据读取端通过对应的出列指针读取循环队列中的对应存储位置存储的数据,从而可以利用一个循环队列实现一对多甚至多对多的数据传输,无需将数据发送端所发送的数据复制到多个循环队列中,可以减少对数据存储空间的占用,拓宽循环队列的应用范围。
[0077]本申请实施例基于循环队列进行一对多的数据传输的应用扩展,能够有效的解决一对多的数据传递和处理问题,减少了后续数据处理的复杂度,减少了数据拷贝的次数,节约了软件代码的空间和时间,节约了成本。
[0078]需要说明的是,本实施例的基于循环队列的数据传输系统可以采用上述方法实施例中的基于循环队列的数据传输方法,可以用于实现上述方法实施例中的全部技术方案,其各个功能模块的功能可以根据上述方法实施例中的方法具体实现,其具体实现过程可参照上述实施例中的相关描述,此处不再赘述。
[0079]为了描述的方便,描述以上系统时以功能分为各种模块分别描述。当然,在实施本申请时可以把各模块的功能在同一个或多个软件和/或硬件中实现。
[0080]本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统或系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的系统及系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
[0081]专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
[0082]结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(R0M)、电可编程R0M、电可擦除可编程R0M、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
[0083]对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
【主权项】
1.一种基于循环队列的数据传输方法,其特征在于,包括: 创建循环队列;所述循环队列中设置有多个出列指针; 为每个数据读取端分配至少一个对应的所述出列指针; 控制每个所述数据读取端通过对应的所述出列指针读取所述循环队列中存储的数据。2.根据权利要求1所述的方法,其特征在于: 所述循环队列中设置有至少一个入列指针,且每个数据发送端分别对应一个所述入列指针。3.根据权利要求2所述的方法,其特征在于,还包括: 按照待发送数据的数据类型,控制每个所述数据发送端通过对应的所述入列指针将所述待发送数据发送到所述循环队列中的指定位置进行存储。4.根据权利要求1所述的方法,其特征在于,所述控制每个所述数据读取端通过对应的所述出列指针读取所述循环队列中存储的数据,包括: 根据每个所述数据读取端的需求数据的数据类型,确定每个所述数据读取端的所述需求数据在所述循环队列中的存储位置; 控制每个所述数据读取端通过对应的所述出列指针在所述循环队列中对应的所述存储位置读取所述需求数据。5.一种基于循环队列的数据传输系统,其特征在于,包括: 创建模块,用于创建循环队列;所述循环队列中设置有多个出列指针; 分配模块,用于为每个数据读取端分配至少一个对应的所述出列指针; 控制模块,用于控制每个所述数据读取端通过对应的所述出列指针读取所述循环队列中存储的数据。6.根据权利要求5所述的系统,其特征在于: 所述循环队列中设置有至少一个入列指针,且每个数据发送端分别对应一个所述入列指针。7.根据权利要求6所述的系统,其特征在于,所述控制模块还用于: 按照待发送数据的数据类型,控制每个所述数据发送端通过对应的所述入列指针将所述待发送数据发送到所述循环队列中的指定位置进行存储。8.根据权利要求5所述的方法,其特征在于,所述控制模块,包括: 确定单元,用于根据每个所述数据读取端的需求数据的数据类型,确定每个所述数据读取端的所述需求数据在所述循环队列中的存储位置; 控制单元,用于控制每个所述数据读取端通过对应的所述出列指针在所述循环队列中对应的所述存储位置读取所述需求数据。
【文档编号】G06F12/0866GK105893279SQ201610192173
【公开日】2016年8月24日
【申请日】2016年3月30日
【发明人】陈志华, 余江森
【申请人】北京经纬恒润科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1