网络IO---5大模型

转载:
100%让你弄明白5种IO模型 - 勤劳的小手的文章 - 知乎
https://zhuanlan.zhihu.com/p/115912936
自我理解:
1.阻塞IO:数据未准备好,应用程序就一直等待,不会执行别的请求,直到有数据返回。
2.非阻塞IO:数据未准备好就返回一个错误EWOULDBLOCK,不会让应用一直等待中,同时应用程序会通过不停的调用recvfrom函数去查询是否有结果,直到有结果为止。
3.IO多路复用:为了解决2不停调用recvfrom函数去查询问题,使用了select函数去监控多个请求是否有数据准备好,有就通知应用程序调用recvfrom去读取,select去监控请求的时候采用的是轮询方式
4.信号驱动IO:为了解决3 select的无脑轮询(因为大多数的轮询是无效的),设置了一个信号在内核上,当数据准备好时,内核就通过信号去通知应用程序你该去读取数据了,然后应用程序才会去读取
5.异步IO:前4种方式都需要应用程序自己去读取数据,异步直接跳过了这一步,自动将数据准备好后从内核复制到用户空间同时告诉应用程序数据已经完成了。
从1到5的过程是一个傻瓜式到全自动的过程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值