在我们的应用程序中,我们有一个连接到多个客户端的服务器。供您参考,它是单线程应用程序。每当客户想要发送一些消息给其他客户时,它就会通过服务器。每当客户端向服务器发送消息时,它都会将消息存储到Dqueue
中。服务器将从Dqueue
中逐一提取消息,它将调用select()
并检查消息应该发送到的通道是否可用。如果是,它将发送,否则它会将其插入后面,以便我们可以处理其他消息。但是,这种方法的问题是,假设客户端C1
发送两条消息S1
和S2
。现在,当服务器尝试将S1
发送到其他客户端C2
时,C2因此忙于将消息S1推入队列的后面。现在假设在处理S2
时,客户端C2
已准备就绪。因此服务器现在可以发送S2
。但问题在于消息将以相反顺序到达C2
(S2
S1
)。需要适当的数据结构来处理来自多个客户端的消息
您能否建议哪些数据结构应该适用于此,以便我们可以保持相同的消息顺序?
在从出列队列中拉出消息之前,是否可以检查C2是否忙? – 2012-04-12 17:18:04
我们可以这样做,但实际上我们不能无限期地等待发送消息。直到套接字处于忙碌状态时,我们希望为其他所有免费客户端处理其他消息 – user382541 2012-04-12 17:46:32
系统中是否存在内存限制或者您可以奢侈地使用内存?哪一个对你更重要?时间还是空间? – 2012-04-12 17:51:16