0

I'm implementing a service for tasks processing and I would like to manage the quality of the service giving greater priority to certain types of tasks. There are four types of tasks, and for this reason I would use four queues, one for each type of task.

  • Could be it convenient to create four processing threads (one for each queue) and assign to them different priorities?
  • Or should I should make the processing thread take care mainly with the higher priority queue?
  • Are there other approaches?
4

1 に答える 1

1

タスクの取得を担当する単一のスレッドを持つことをお勧めします。

非常に多くの可能な戦略があります。1 つは、単純に 4 つのキューを用意し、それらの間を循環させようとする方法です。もう 1 つは、タスクを優先度キュー (通常はヒープ データ構造で実装) に固定することですが、その場合、優先度の高いタスクはすべて、優先度の低いタスクの前に実行されることに注意してください。3 つ目は、年齢に基づいた優先キューを使用することです。これにより、最も古いリクエストを最初に取得してから、優先度の高いリクエストを人為的に古いものにすることができます。(キューにある最も古いものの年齢と一定の期間を提案できます。)

覚えておくべき一般的なポイントを1つ。十分なキャパシティーを割り当てると、キューはかなり短いままになる可能性があります。キャパシティが不十分な場合、キューは際限なく増加します。長期的には、キューイングの問題は優先順位付けではなくトリアージの 1 つと考えることができます。しかし、可能であれば、賢く優先順位を付けるのではなく、キャパシティーを増やそうとする方がうまくいくことがよくあります。

于 2012-06-30T00:43:36.057 に答える