假设我们要实现一个网络应用程序,例如与中央服务器和多个客户端聊天:我们假设所有通信都必须通过中央服务器,然后它应该从一些客户端获取消息并将它们转发给目标客户端,并且很快。
无论使用何种技术(套接字、Web 服务等),都可以认为存在一些生产者线程(生成消息)和一些消费者线程(读取消息)。
例如,您可以对传入和传出消息使用单个队列,但使用单个队列,您不能同时接收和发送消息,因为一次只有一个线程可以访问该队列。
也许使用两个队列更合适:例如,本文介绍了一种管理双队列的方法,这样生产者和消费者几乎可以同时工作。如果只有生产者和消费者,这种情况可能很好,但如果有很多客户:
- 如何使中央服务器可以同时从多个输入流接收数据?
- 如何使中央服务器可以同时将数据发送到多个输出流?
为了解决这个问题,我的想法是为每个客户端使用一个双队列:在中央服务器上,每个客户端连接可能与两个队列相关联,一个用于来自该客户端的传入消息,一个用于发送到该客户端的传出消息。通过这种方式,中央服务器可以在几乎所有与客户端的连接上同时发送和接收数据......
可能还有其他管理队列的方法......确定需要多少个队列以及如何组织它们的参数是什么?有不需要排队的情况?