优先处理不同类型的消息

Prioritizing different types of messages

我有 t 种不同的消息类型,它们可以在不同的时间到达队列 q。到达的消息数 在特定时间可能会有所不同。每种类型都有一些优先级。

我需要编写一个算法,按照以下规则在优先级队列中对这些消息进行排序:

示例 1:

此队列的可能状态(前 8 条消息)

q = t1,t1,t2,t1,t1,t2,t1,t3

示例 2:

5 t2 条消息到达空队列后我有:

q = t2,t2,t2,t2,t2

现在如果有 10 t1 条消息到达,我需要进行以下分配:

q = t1,t1,t2,t1,t1,t2,t1,t1,t2,t1,t1,t2,t1,t1,t2

是否已经有实现此功能的算法?

我的想法是为每个优先级保留三个不同的队列。维护每个队列中的消息数。

令ratio1 = c1 / (c1 + c2 + c3)。在您的示例中,c1、c2、c3 分别为 5、2、1。

从第一个队列中选取 (n1 * ratio1) 条消息,然后从第二个队列中选取 (n2 * ratio2) 条消息,依此类推。 n1、n2、n3 分别是队列 1、2、3 中当前的消息数。

我解释了我的总体思路。您可以将其扩展到任意数量的队列。

我想到将上述方案命名为基于优先级的轮循算法。我搜索了这个名字,我也搜索了 found a relevant article 。希望对你有帮助。