私のアプリケーションは、クライアントからのメッセージを特定の順序で処理する必要があります。メッセージに同じタグが含まれている場合、これらのメッセージは順次処理する必要があり、異なるスレッドで同時に処理することはできません。同じタグを持つメッセージは、異なるクライアントから取得される場合があります。タグは事前に指定されていません。この要件を実装する方法は? すぐに使用できるソリューション、この機能を備えたキュー、その他のものはありますか...
質問する
133 次
2 に答える
1
これは「優先度キュー」のデータ構造に似ていますが、優先度の代わりに、メッセージをタグで区別して処理します。
正確なニーズが何であるかはわかりませんが、実装は非常に簡単です。
class TagQueue {
Dictionary<Tag, Queue> _queues;
void Enqueue(tag, payload) {
_queues[tag].Enqueue(payload);
}
Payload Dequeue(tag) {
return _queues[tag].Dequeue();
}
Ienumerable<Tag> Tags { get { return _queues.Keys } };
}
于 2012-07-13T16:24:56.820 に答える
0
于 2012-07-18T05:27:28.563 に答える