网络 IO 模型发展史
网络 IO 模型进化史整个网络 IO 模型的发展是从阻塞 IO开始、中间逐步演变成非阻塞 IO、基于非阻塞 IO 的多路复用模型。其中多路复用又是从 select 发展到 poll 最后到 epoll 形式的。 阻塞 IO就是一直等着,直到拿到数据之后才继续往下执行。客户端和服务端建立好连接之后,服务端读取客户端发送过来的数据。从 read 开始就一直等着,直到读取到数据才返回,继续往下执行。这种方式的缺点就是,一个线程只能处理一个连接。如果我想处理多个客户端的连接,就只能多开线程。虽然线程是轻量的,但是当我有很多个连接的时候,线程开销会非常大。那能不能不让 read 等待呢?能不能调用了之后让它直接返回?这就是非阻塞 IO。 非阻塞 IO首先来看一下服务端是怎么一步一步把数据给到用户态的。 客户端发送数据给服务端 网卡收到客户端发来的数据 网卡等着数据全部发过来之后,将数据拷贝到内核 内核等着数据拷贝完成后,将数据拷贝给用户态 用户态等待数据全部拷贝完成整个过程也就是 客户端 -> 网卡 -> 内核 -> 用户态。 那为了能够让 read...
重新出发
离上一次写博客已经差不多 1 年了,定个周更的目标,希望自己能坚持下来!