我有一個服務器多個客戶端服務器 - 在接收到來自客戶端的消息後,服務器需要處理它,然後再傳遞給另一個客戶端。在哈希表或矢量向量中存儲隊列
我不知道什麼是我想要做的最好的實現,所以將不勝感激任何幫助。這些消息將以一定的時間間隔發送,所以消息需要被接收,處理並推入到一個結構中,然後才能在某個特定時間從要發送的結構進行訪問。該消息有兩個屬性:目標和優先級。訪問將以具有兩種模式的時間間隔執行:或者特定於客戶端節點,或者對所有節點開放以進行接收。
- 如果時間間隔只允許一個特定的節點接收,會發生什麼情況是所有的隊列被從最高優先級檢查以最低即,從結構中的最高優先級發送的最早的消息將被「推」出。
- 如果時間間隔是'開放',那麼不管節點的最高優先級的最早的消息將被'推出'。
我首先想到它可能是一個vector<vector<queue<message>>
,但我意識到,根據第2點搜索將不會有效。我將不勝感激任何建議!我被告知使用哈希映射,但是我沒有這方面的經驗,如果這是最好的方法去解決這個問題,我會很感激的。
編輯:是一個更好的解決方案,將相同的消息推送到兩個不同的結構?一種:根據優先級分類,向量持有FIFO隊列(每個優先級一個)。二:根據節點對其進行分類,vector<vector<queue<message>>
。
爲了澄清,每個消息總是註定*一個*節點?此外,節點的可能數量是多少(至少是非常粗略的範圍:幾十,幾百,幾千)? – 2013-02-21 18:05:14
@Darius消息最初只能發往一個節點(隨後可能會實現廣播)。節點的可能數量將從幾十到幾百。對不起,沒有說清楚! – sccs 2013-02-22 01:31:02