系统的架构如图所示,其中:
服务器A:
1}对外开放的服务器,有多个客户端连接到该服务器。
2}每个与客户端的连接分配一个线程,专门负责处理这个Socket
3)服务器A需要将各个客户端的数据进行汇总和处理,然后通过一个新的Socket连接到内部服务器B,同样有一个专门的线程负责与B的连接
4)内部服务器B将处理结果返回A,A再根据一定的规则将数据回发给各个客户端
服务器A上通过线程安全的队列实现线程之间的数据交换。
问题:
对于任何一个对外连接的Socket,需要判断两个事情:
1、Socket上是否有客户端发给我的信息?如果有,转发给服务器B
2、我自己的发送队列是否有数据?有的话,将其发送给客户端。
这两个操作,如何在一个线程里实现:
a、接收和发送互不阻塞
b、不使用轮询的方法,降低CPU资源占用