我有一个服务器多个客户端服务器 - 在接收到来自客户端的消息后,服务器需要处理它,然后再传递给另一个客户端。在哈希表或矢量向量中存储队列
我不知道什么是我想要做的最好的实现,所以将不胜感激任何帮助。这些消息将以一定的时间间隔发送,所以消息需要被接收,处理并推入到一个结构中,然后才能在某个特定时间从要发送的结构进行访问。该消息有两个属性:目标和优先级。访问将以具有两种模式的时间间隔执行:或者特定于客户端节点,或者对所有节点开放以进行接收。
- 如果时间间隔只允许一个特定的节点接收,会发生什么情况是所有的队列被从最高优先级检查以最低即,从结构中的最高优先级发送的最早的消息将被“推”出。
- 如果时间间隔是'开放',那么不管节点的最高优先级的最早的消息将被'推出'。
我首先想到它可能是一个vector<vector<queue<message>>
,但我意识到,根据第2点搜索将不会有效。我将不胜感激任何建议!我被告知使用哈希映射,但是我没有这方面的经验,如果这是最好的方法去解决这个问题,我会很感激的。
编辑:是一个更好的解决方案,将相同的消息推送到两个不同的结构?一种:根据优先级分类,向量持有FIFO队列(每个优先级一个)。二:根据节点对其进行分类,vector<vector<queue<message>>
。
为了澄清,每个消息总是注定*一个*节点?此外,节点的可能数量是多少(至少是非常粗略的范围:几十,几百,几千)? – 2013-02-21 18:05:14
@Darius消息最初只能发往一个节点(随后可能会实现广播)。节点的可能数量将从几十到几百。对不起,没有说清楚! – sccs 2013-02-22 01:31:02