私はサーバー(複数のクライアントサーバー)を持っています。クライアントからメッセージを受信すると、サーバーはそれを処理してから、別のクライアントに渡す必要があります。
自分がやりたいことに対して最適な実装が何であるかわからないので、助けていただければ幸いです。これらのメッセージは時間間隔で送信されるため、特定の時間に送信される構造からアクセスされる前に、メッセージを受信して処理し、構造にプッシュする必要があります。メッセージには、宛先と優先度の2つの属性があります。アクセスは、クライアントノードに固有のモードと受信用にすべてのノードに開かれたモードの2つのモードがある時間間隔で実行されます。
- 時間間隔で特定のノードのみが受信できる場合、すべてのキューが最高の優先度から最低の優先度までチェックされます。つまり、最高の優先度で送信された最も早いメッセージが構造から「プッシュ」されます。
- 時間間隔が「オープン」の場合、ノードに関係なく、最も優先度の高い最も早いメッセージが「プッシュ」されます。
と思ったのですがvector<vector<queue<message>>
、ポイント2で検索するのは効率的ではないことに気づきました。アドバイスをいただければ幸いです。ハッシュマップの使用についてアドバイスを受けましたが、これについての経験はありません。これが最善の方法である場合は、アドバイスをいただければ幸いです。
編集:同じメッセージを2つの異なる構造にプッシュするためのより良い解決策はありますか?1つ:優先度レベルに従って分類し、FIFOキューを保持するベクトル(優先度レベルごとに1つ)。2:ノードに従って分類しますvector<vector<queue<message>>
。