简单聊聊 IO模型

在描述IO模型之前,需要先搞清楚两个概念

同步:调用者(用户线程)需要主动等待被调用者(系统内核或者IO设备)返回消息或者操作完成后,才能执行后续的代码。

阻塞:调用者在等待结果返回过程中所处的状态。如果是阻塞IO,当调用者发起IO请求后,会一致等待该请求完成(数据读取或者写入完毕),在这个过程中,什么都不做。

BIO 模型

调用者在等待IO操作完成的时候,都是出于阻塞的状态。

NIO

调用者发起IO请求之后,不会产生阻塞,会立即返回,但是没有读取到数据

这个时候调用者会不断发起IO请求,直到数据达到

这种方式避免了阻塞,但是其实在数据准备好之前,什么都做不了,还会消耗大量的cpu资源。

I/O多路复用技术

是对NIO的一种优化,允许单个线程(Selector)同时处理多个请求,通过监视多个文件描述符(如socket)的就绪状态,当某个描述符就绪的时候,再进行处理。

在操作系统底层使用了,select、poll和epoll等技术进行实现。

epoll和其他几个技术的区别是

select/poll:我知道在需要处理的多个请求中,有请求已经准备好了,但是我不知道是谁,我需要去遍历。

epoll:我知道谁已经准备好了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值