分析上一章我们实现的服务端,listent函数创建一个监听队列以存放待处理的客户连接,每次调用accpet函数从上述已完成连接队列中接受一个客户端连接。因此,上述时间获取服务端处理方式如下 :一次只能处理一个客户,当多个客户端连接几乎同时到达服务端时,系统内核将其排入队列,accept函数依次处理连接,然后才发送当前时间给客户端。 这样的处理方式是按照顺序处理客户端连接的,因此这种服务端本质上是一个迭代服务端 。
对于上述获取时间的服务端,因为处理一个客户的时间很短(仅仅发送当前时间给客户端),运行速度很快,使用迭代服务端就可以满足需要。但是如果服务一个客户的时间很长(比如有其他计算任务),那么后续的客户会一直等待,会影响用户体验。正如我们打联通的客户电话10010,如果联通客服都排队接听电话,我们会很不满意。
因此,我们需要考虑实现一个服务端:保证服务端能够能够同时服务多个客户 ,而不是迭代处理。