五大IO模型

阻塞IO 一个IO一个进程(线程),消耗资源,适用于并发量小的场景,请求IO要阻塞在那里,不占用cpu资源,缺点:不适用并发量大的应用:因为一个请求IO会阻塞进程,所以得为每个请求进程分配一个处理进程(线程)以及时响应,系统开销大。

非阻塞IO 请求IO不阻塞,它处于忙轮循状态,消耗CPU资源

IO复用 select、poll、epoll三种方案,只有一个被注册的进程,在它里面没有注册的进程在IO时被阻塞,select和poll是O(n)的时间复杂度且当注册的IO进程有数据时就线性查,epoll是红黑树o(logn)且采用O(1)的回调方式。不用为每个请求IO都分配处理进程,被注册进程(select,poll或者epoll)可以自己或通知或生成对应的另外的处理进程来再次发起读取IO,读取内核中准备好的数据。
适用高并发服务应用开发:一个进程(线程)响应多个请求;

信号IO 当进程发起一个IO操作,会向内核注册一个信号处理函数,然后请求IO进程返回不阻塞;当内核数据就绪时会发送一个信号给请求IO进程,请求IO进程便在信号处理函数中调用IO读取数据。 由于不阻塞同样消耗cpu资源。

异步IO 当进程发起一个IO操作,进程返回(不阻塞),但也不能返回果结果;内核把整个IO处理完后,会通知进程结果。如果IO操作成功则进程直接获取到数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值