这就是同步网络 IO 的模型. 同步网络 IO 模型在处理少量连接的时候, 是没有问题的. 但是如果要同时处理非 常多的连接, 同步的网络 IO 模型就有点儿力不从心了.
因为, 每个连接都需要阻塞一个线程来等待数据, 大量的连接数就会需要相同数量的数据接收线程. 当这些 TCP 连接都在进行数据收发的时候, 会导致什么情况呢? 对, 会有大量的线程来抢占 CPU 时间, 造成频繁的 CPU 上下文切换, 导致 CPU 的负载升高, 整个系统的性能就会比较慢.
所以, 我们需要使用异步的模型来解决网络 IO 问题. 怎么解决呢?
你可以先抛开你知道的各种语言的异步类库和各种异步的网络 IO 框架, 想一想, 对于业务开发者来说, 一个 好的异步网络框架, 它的 API 应该是什么样的呢?
我们希望达到的效果, 无非就是, 只用少量的线程就能处理大量的连接, 有数据到来的时候能第一时间处理 就可以了.
来源: http://www.bubuko.com/infodetail-3211818.html