IO
最后更新于
这有帮助吗?
最后更新于
这有帮助吗?
TCP进行报文发送以及接收时,会经过一个缓冲区: 当发送请求的数据大小大于TCP发送缓冲区的剩余空间时,这时就会阻塞,直到发送缓冲区的剩余大小足够存放数据。 当接收请求的数据大小大于TCP接收缓冲区的剩余空间时,这时就会阻塞,知道接收缓冲区的剩余大小足够存放数据。
这就是BIO。
为了解决这类问题,就出现了NIO,Non-Blocking IO 非阻塞IO。NIO在底层存在一个I/O调度线程,不断的扫描每个socket的缓冲区,当发现TCP缓冲区空间不足时,主动通知发送端/接收端,当缓冲区大小够的时候,主动通知发送端/接收端进行发送/接收。
BIO(同步阻塞):等待我的鸡蛋饼做好,然后拿走
NIO(同步非阻塞):付完钱后,告诉小哥一声,我等会儿过来拿
AIO(异步非阻塞):告诉小哥鸡蛋饼做好给我送到我家(外卖)