优先队列中的饥饿预防

时间:2018-04-29 05:06:37

标签: algorithm priority-queue starvation

众所周知,优先级队列可以以最简单的形式为较低优先级的项目创建饥饿。例如,假设优先级队列中的以下项目按优先级递增顺序排列:

Item     Priority
--------------------
Item A      0      //Lowest priority
Item B      1
Item C      2
Item D      3
Item E      4      //Highest priority

现在,如果我们在优先级队列(B-E)中收到具有更高优先级的一致的项目流,我们可能永远不会处理较低优先级的数据包(A)。我想知道有哪些算法来处理这个问题?

我想到的一个简单方法是根据优先级限制不同项目类型的处理。例如,我们将每种类型的数据包处理限制为2 ^ priority。因此,对于上表,在处理了Item E类型的16项后,我们最多可处理8个Item D类型的项目,最多4个Item C项,最多2个Item B项在开始再次处理Item A之前,最多1个Item E。这将防止不同项目类型的饥饿。

这是一个简单的方法,但我想知道是否有其他着名的算法来解决这个问题。想要更好的算法或解决方案吗?

0 个答案:

没有答案