单线程+非阻塞IO的服务器设计

1.为什么引入非阻塞IO+IO多路复用:

以accept为例:accept等待连接时,陷入阻塞,而在阻塞期间相当于服务器是没有在工作的。

以read为例:当当前处理的socket中已无数据,但对端的数据尚未到达时,此时调用read,陷入阻塞,而在阻塞期间如果有其他客户端发起请求,是无法连接到服务器的。

以write为例:当对端缓冲区已满,此时往socket中写数据,陷入阻塞,直到对端可以接受数据,而在这段时间一样会无视新请求的加入。

 

posted @ 2019-07-13 22:28  李湘沅  阅读(295)  评论(0编辑  收藏  举报