在我们的应用程序中,我们有一个服务器将连接到多个客户端。供您参考,它是单线程应用程序。每当客户端想要向其他客户端发送一些消息时,它将通过服务器。每当客户端向服务器发送消息时,它都会将消息存储到Dqueue
. 服务器会从 中一一提取消息,Dqueue
并调用select()
并检查应该发送消息的通道是否可用。如果是,它会发送,否则它将插入到后面,以便我们可以处理其他消息。但是这种方法的问题是,假设客户端C1
发送两条消息S1
和S2
。现在,当服务器尝试发送S1
到其他客户端时C2
, C2 很忙,因此它将消息 S1 推到队列的后面。现在假设在处理过程S2
中,客户端已经准备好了。C2
所以服务器现在可以发送了S2
。但问题是消息会以C2
相反的顺序 ( S2
S1
) 到达。
您能否建议哪种数据结构适合于此,以便我们可以保持相同的消息顺序?