一种优先级队列的管理方法技术

技术编号:2841706 阅读:243 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开了一种优先级队列的管理方法,为每个优先级队列配置包括不同优先级队列单元插入位置的索引表,并将索引表中所有插入位置初始化为空地址,将新队列单元插入到优先级队列时,该方法还包括:步骤A,根据新队列单元的优先级以及索引表中的插入位置信息确定所述新队列单元的插入位置,并根据所确定的插入位置将新队列单元插入到优先级队列中;步骤B,刷新索引表中的插入位置。采用本发明专利技术所提供的技术方案,在将队列单元插入队列时,只需要以要插入的队列单元的优先级为索引号在索引表中进行查找即可确定插入位置,而不用从队列的一端开始,逐队列单元进行比较以确定插入位置,从而提高了插入队列单元时的处理速度,更便于优先级队列的管理。

【技术实现步骤摘要】

本专利技术涉及计算机应用技术,特别是涉及。
技术介绍
在支持优先级的消息处理中,等候处理模块进行处理的消息是按照优先级的顺序排列,而不是按照请求处理的先后排列。也就是说,优先级高的消息,即使比优先级低的消息后请求处理,也应该比优先级低的消息先得到处理。 优先级队列可以实现支持优先级的消息处理。优先级队列的每个队列单元封装了一条具有优先级的消息,队列单元的优先级就是消息的优先级。在优先级队列中,队列单元按照优先级由低到高的顺序从队列头排列到队列尾,即位于队列头的队列单元的优先级最低,位于队列尾的队列单元的优先级最高。具有同样优先级的队列单元按照插入队列的时间先后排列,先插入队列的队列单元排列在靠近队列尾的位置,后插入队列的队列单元排列在靠近队列头的位置。处理模块从队列尾开始,逐个处理每个队列单元所封装的消息,并将已处理的队列单元从优先级队列中删除。 在现有技术中,如果有一个队列单元要插入到优先级队列中,需要从队列头或队列尾开始,逐个比较每个队列单元的优先级与当前要插入的队列单元的优先级的高低,以确定插入位置。以从队列头开始比较为例,如果经过比较发现前一个队列单元的优先级低于当前要插入的队列单元的优先级,且后一个队列单元的优先级不低于当前要插入的队列单元的优先级,则当前要插入的队列单元就应该插入到前一个队列单元和后一个队列单元之间。 在实际应用中,优先级队列中队列单元的个数很多。在现有技术中,每次向优先级队列中插入队列单元都需要从队列的一端开始逐个比较,通常需要经过大量的比较操作才能确定插入位置,最坏的情况是需要遍历整个队列才能确定插入位置,然后再进行插入操作本身。这样,确定插入位置所需要的平均时间,远远大于进行插入操作本身所需要的时间,因此造成了处理能力的浪费,即大量的处理能力被用在确定插入位置时的比较上,从而降低了处理其他任务的能力。
技术实现思路
有鉴于此,本专利技术的主要目的在于提供,以提高对优先级队列的处理速度。 为了达到上述目的,本专利技术提供了,为每个优先级队列配置包括不同优先级队列单元插入位置的索引表,并将索引表初始化为所有元素均为空地址,将新队列单元插入到优先级队列时,该方法还包括 步骤A,根据新队列单元的优先级以及索引表中的插入位置信息,确定所述新队列单元的插入位置,并根据所确定的插入位置将新队列单元插入到优先级队列中; 步骤B,刷新索引表中的插入位置。 其中,步骤A中所述根据新队列单元的优先级以及索引表确定所述新队列单元的插入位置为 以新队列单元的优先级为索引号,将索引表中该索引号对应的插入位置作为新队列单元在插入到优先级队列时,位于新队列单元之前的队列单元的存储地址。 其中,步骤B所述刷新插入位置包括 步骤B1,判断新队列单元的优先级是否为最高优先级,如果是则结束当前刷新流程,否则执行步骤B2; 步骤B2,以新队列单元的优先级加1为当前索引号; 步骤B3,读取索引表中当前索引号对应的插入位置,并判断是否需要修改所读取的插入位置,如果需要修改则执行步骤B4,否则结束当前刷新流程; 步骤B4,将当前索引号对应的插入位置修改为新队列单元的地址,并判断当前索引号是否等于最高优先级,如果是则结束当前刷新流程,否则执行步骤B5; 步骤B5,将当前索引号加1后作为新的当前索引号,返回执行步骤B3。 其中,步骤B3所述判断是否需要修改所读取的插入位置为 判断当前索引所对应的插入位置是否等于空地址或所述新队列单元的插入地址两者中的任意一个,如果是则认为需要修改所读取的插入位置,否则认为不需要修改所读取的插入位置。 其中,该方法进一步包括 步骤C,将位于队列尾的队列单元从优先级队列中删除,并刷新索引表的插入位置。 其中,所述步骤C包括 步骤C1,判断索引表中以最高优先级作为索引号所对应的插入位置是否为空地址,如果是则执行步骤C5,否则将位于队列尾的队列单元从优先级队列中删除,并执行步骤C2; 步骤C2,以步骤C1中删除的队列单元的优先级加1作为当前索引号, 步骤C3,将步骤C1中删除的队列单元中前向指针数据项的值,赋予索引表中当前索引号对应的插入位置,然后判断当前索引号的值是否等于最高优先级,如果是则执行步骤C3,否则结束当前刷新流程; 步骤C4,将当前索引号的值加1后作为新的当前索引号,返回执行步骤C2; 步骤C5,确定优先级队列为空队列,无法从其中删除任何队列单元。 其中,所述将位于队列尾的队列单元从优先级队列中删除为 将被删除队列单元的前向指针数据域的值,赋予与优先级队列对应的队列描述中队列尾指针数据域;以被删除队列单元的前向指针数据域的值为地址,将存储于该地址处的队列单元的后项指针数据域修改为空地址。 采用本专利技术所提供的技术方案,为每个优先级队列配置一张索引表,在将队列单元插入队列时,只需要以要插入的队列单元的优先级为索引号在索引表中进行查找即可确定插入位置,而不用从队列的一端开始,逐队列单元进行比较以确定插入位置,从而提高了插入队列单元时的处理速度,更便于优先级队列的管理。 附图说明 图1是本专利技术所提供的优先级队列的示意图; 图2是本专利技术所提供的优先级队列的管理方法中插入队列单元时的流程图; 图3是本专利技术所提供的优先级队列在插入队列单元后的示意图; 图4是本专利技术所提供的优先级队列的管理方法中删除队列单元时的流程图。 具体实施例方式 本专利技术的核心思想在于,为每个优先级队列配置一张索引表,在向优先级队列插入队列单元时,根据该索引表中记载的与队列单元优先级一一对应的插入位置信息确定插入位置,并且在向优先级队列插入队列单元和从优先级队列中删除队列单元时动态刷新该索引表。 为使本专利技术的目的、技术方案和优点更加清楚,下面结合附图及具体实施例对本专利技术作进一步地详细描述。 本专利技术中,每个优先级队列是由若干个队列单元和一个队列描述组成的。 每个队列单元对应一条消息,队列单元中的消息指针数据项等于对应消息的存储地址;队列单元的优先级数据项等于对应消息的优先级;队列单元的前向指针数据项,等于优先级队列中比自身更靠近队列头的下一个队列单元的存储地址,位于队列头的队列单元的前向指针为空地址;队列单元的后向指针数据项,等于优先级队列中比自身更靠近队列尾的下一个队列单元的存储地址,位于队列尾的队列单元的后向指针为空地址。在本专利技术中,将相对于某个队列单元更靠近队列头的下一个队列单元称为前向队列单元,将相对于某个队列单元更靠近队列尾的下一个队列单元称为后向队列单元。空地址可以看作是一种特殊的队列单元,即具有空地址的队列单元没有任何数据项,并且可以作为前向队列单元也可以作为后向队列单元。 队列描述有三个数据项队列头指针、队列尾指针和索引表。其中队列头指针数据项等于位于队列头的队列单元的存储地址;队列尾指针数据项等于位于队列尾的队列单元的存储地址;索引表存储具有某一优先级的新队列单元在优先级队列中的插入位置。 索引表中的索引号对应于优先级队列所能处理的优先级,例如当优先级队列能够处理20个优先级的时候,索引表中的索引号为1到20;索引表元素的数据类型为指针型。在建立一个新的优先级队列时,将索引表的所有元素初始化为空地址。 索引表中每本文档来自技高网
...

【技术保护点】
一种优先级队列的管理方法,其特征在于,为每个优先级队列配置包括不同优先级队列单元插入位置的索引表,并将索引表中所有插入位置初始化为空地址,将新队列单元插入到优先级队列时,该方法还包括:步骤A,根据新队列单元的优先级以及索引表中的插入 位置信息,确定所述新队列单元的插入位置,并根据所确定的插入位置将新队列单元插入到优先级队列中;步骤B,刷新索引表中的插入位置。

【技术特征摘要】
1、一种优先级队列的管理方法,其特征在于,为每个优先级队列配置包括不同优先级队列单元插入位置的索引表,并将索引表中所有插入位置初始化为空地址,将新队列单元插入到优先级队列时,该方法还包括步骤A,根据新队列单元的优先级以及索引表中的插入位置信息,确定所述新队列单元的插入位置,并根据所确定的插入位置将新队列单元插入到优先级队列中;步骤B,刷新索引表中的插入位置。2、根据权利要求1所述的优先级队列的管理方法,其特征在于,步骤A中所述根据新队列单元的优先级以及索引表确定所述新队列单元的插入位置为以新队列单元的优先级为索引号,将索引表中该索引号对应的插入位置作为新队列单元在插入到优先级队列时,位于新队列单元之前的队列单元的存储地址。3、根据权利要求1所述的优先级队列的管理方法,其特征在于,步骤B所述刷新插入位置包括步骤B1,判断新队列单元的优先级是否为最高优先级,如果是则结束当前刷新流程,否则执行步骤B2;步骤B2,以新队列单元的优先级加1为当前索引号;步骤B3,读取索引表中当前索引号对应的插入位置,并判断是否需要修改所读取的插入位置,如果需要修改则执行步骤B4,否则结束当前刷新流程;步骤B4,将当前索引号对应的插入位置修改为新队列单元的地址,并判断当前索引号是否等于最高优先级,如果是则结束当前刷新流程,否则执行步骤B5;步骤B5,将当前索引号加1后作为新的当前索引号,返回执行步骤B3。4、根据权利要求3所述的优先级队列的管理方法,其特征在于,步...

【专利技术属性】
技术研发人员:王鑫
申请(专利权)人:腾讯科技深圳有限公司
类型:发明
国别省市:94[中国|深圳]

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

1