2012-07-12 33 views
0

我的應用程序必須按特定順序處理來自客戶端的消息。如果消息包含相同的標籤,則這些消息必須按順序處理,不能在不同的線程中同時處理。具有相同標籤的消息可以從不同的客戶端獲得。標籤沒有預先指定。如何實現這個要求?是否有出的現成的解決方案,隊列使用此功能,別的東西......如何按特定順序處理消息?

+1

所以,你要平行消息而不相同的標記? – Paparazzi 2012-07-12 18:12:25

回答

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 } }; 
}