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