网络编程 I/O模型

这两天在复习网络编程I/O模型,截几张图做笔记

I/O模型包括五种:1.阻塞IO  2.非阻塞IO  3.I/O多路复用  4.信号驱动I/O 5.异步I/O


1.阻塞I/O 


客户端或者服务器端的recvfrom()/read()之类的接收消息函数一直等带着数据的到来,没有数据到来九一直等,阻塞这个进程的运行,数据来了就返回,程序继续网下执行




2.非阻塞I/O


客户端或者服务器端的recvfrom()/read()之类的接收消息函数不管有没有消息都会以及返回,有消息的话就拷贝到用户空间。这种太消耗CPU资源了



3.I/O多路复用

利用select和poll函数实现多路复用,其实它也是阻塞的, 他和阻塞模式不同的是它可以监听多个连接,哪个连接的数据到了,它九返回那个连接的描述符,这样是不是高效很多了。


多路复用IO的好处,举个例子:




4.信号驱动I/O


注册一个信号处理函数,有数据就会发出一个信号,执行信号处理函数,类似于java中的接口回调,像OnClickListerner一样



5.异步I/O

异步I/O和信号驱动的区别

信号驱动I/O:消息来了,发出通知,然后再拷贝数据到用户空间

异步I/O:消息拷贝完了再发出通知



几种模式的比较:


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值