我正在为任务处理实现一项服务,我想管理服务的质量,为某些类型的任务提供更高的优先级。有四种类型的任务,因此我会使用四个队列,每种类型的任务一个。
答案 0 :(得分:1)
我建议有一个负责抓取任务的线程。
有许多可能的策略。一个是简单地拥有4个队列,并尝试在它们之间循环。另一种方法是将任务粘贴到优先级队列中(通常使用堆数据结构实现),但如果这样做,则要注意所有优先级较高的任务将在任何较低优先级的任务之前执行。第三种是使用基于年龄的优先级队列,这样您就可以先获取最早的请求 - 然后人为地提出高优先级请求。 (我可以建议队列中最古老的东西的年龄加上一个常数。)
要记住一个要点。如果您分配了足够的容量,您的队列可能会保持相当短的时间。如果您的容量不足,那么队列将无限制地增长,并且从长远来看,您可以将排队问题视为分类而不是优先级。但是,如果可能的话,通常可以尝试增加容量,而不是在确定优先级时聪明。