gpt4 book ai didi

c - 需要一个适当的数据结构来处理来自多个客户端的消息

转载 作者:太空宇宙 更新时间:2023-11-04 04:02:32 24 4
gpt4 key购买 nike

在我们的应用程序中,我们有一个服务器将连接到多个客户端。供您引用,它是单线程应用程序。每当客户端想要向其他客户端发送一些消息时,它将通过服务器。每当客户端向服务器发送消息时,它会将消息存储到 Dqueue 中。服务器将从Dqueue中一条一条地提取消息,然后调用select()检查消息发送的 channel 是否可用。如果是,它将发送,否则它将插入到后面,以便我们可以处理其他消息。但是这种方法的问题是,假设客户端 C1 发送两条消息 S1S2。现在,当服务器尝试将 S1 发送到其他客户端 C2 时,C2 正忙,因此它将消息 S1 插入队列的后面。现在假设在处理 S2 时,客户端 C2 已准备就绪。因此服务器现在可以发送 S2。但这样做的问题是消息将以相反的顺序到达 C2 (S2 S1)。

能否请您建议适合这种情况的数据结构,以便我们可以保持相同的消息顺序?

最佳答案

不要使用单个队列来处理所有消息。每个客户端都需要自己的队列。当消息到达时,确定它的目标客户并将消息放在该客户队列的末尾。然后更新您的服务器逻辑以仅将给定客户端队列中的顶部消息发送到该客户端。如果客户端正忙,则不要发送 top 消息。如果客户端准备就绪,则发送顶部消息并将其从该客户端的队列中删除。

关于c - 需要一个适当的数据结构来处理来自多个客户端的消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10128490/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com