5种I/O模型,学习笔记

五种I/O模型:

1.阻塞I/O
2.非阻塞I/O
3.I/O复用
4.信号驱动I/O
5.异步I/O


同步与异步
假设:每次请求服务器需要等待N秒时间,现在连续完成请求1请求2

同步和异步主要针对C(client)端
同步:
在c端发出请求1调用时,在没有得到结果之前,持续等待,不能进行其他操作,直到N秒后得到结果,发出请求2
如:一般的B/S应用(同步),提交请求1>>等待服务器响应(N秒)>>收到响应>>完成请求1>>发起请求2>>等待服务器响应(N秒)>>完成请求2
耗时:>2N秒

异步:
在c端发出一个功能调用时,无需等待可立即进行其他动作,等待服务器响应后再进行回调处理
如:移动端应用(异步),提交请求1>>提交请求2>>收到响应2>>收到响应1>>完成请求1>>完成请求2
如上,请求2可以在请求1开始后立即发出,其中有可能后发起的请求2先获得服务器返回,并完成后续回调
耗时:N<所耗时<2N秒


阻塞与非阻塞

阻塞和非阻塞主要针对S端(server)

阻塞:
阻塞调用是指调用结果返回之前,当前线程会被挂起(线程进入非可执行状态,在这个状态,cpu不会分配时间片,线程暂停运行)函数只有得到结果返回。
如:请求到了服务器,请求线程需要的资源,CPU需要准备一段时间,在这段时间内,该线程被阻塞(挂起),不能进行其他活动,,直到CPU准备好数据资源才会解除阻塞(CPU准备资源返回给线程(进程)需要时间,类似于C端请求发到服气器,服务器需要处理时间一样)

非阻塞:
非阻塞调用是指调用结果返回过程中(CPU立即返回一下结果),当前线程不会被挂起,从不停歇,CPU处理过程中,该线程可进行其他任务。
如:请求到了服务器,请求线程需要的资源,CPU需要准备一段时间,在这段时间内,该线程可以进行后续其他任务,从不停歇,若CPU准备好通知线程,线程进行回调执行


区分阻塞/同步和非阻塞/异步:只要理解了阻塞/非阻塞式针对单一事件,同步/异步是针对多个事件这个核心就能够区分阻塞/同步和非阻塞/异步这两组完全不同的概念。

参考:
https://www.cnblogs.com/zengkefu/p/5814761.html
https://www.cnblogs.com/LUO77/p/5790201.html

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值