IO编程详解

IO(input/output),指的是计算机中数据的输入与输出。即是将进程的内部数据输送到外部设备,外部设备的数据输送到进程内部。(外部设备一般有硬盘,scoket通讯的网卡)。由于程序和运行时数据是在内存中驻留,由CPU这个超快的计算核心来执行,涉及到数据交换的地方,通常是磁盘、网络等,就需要IO接口(IO接口简单理解就是物理接口,例如:如果是通过网路进行交换,那么他的IO接口就是网线接口。)

例如:我问向谷歌浏览器发送一个打开百度的请求,这个程序需要通过网络的IO获取网页信息,这时浏览器需要向百度服务器传输数据,这就是数据的输出(Output),百度服务器接收到信息,放送一个结果给浏览器,这就是数据的输入(input)。

由于CPU和内存的传输速度远远大于外部设备的速度,所以,在IO编程中,就存在速度严重不匹配的问题。举个例子来说,比如要把1G的数据写入U盘,CPU输出1G的数据只需要0.1秒,可是磁盘要接收这1G数据可能需要10秒,怎么办呢?有两种办法:

第一种是“同步IO”,CPU等着,也就是程序暂停执行后续代码,等1G的数据在10秒后写入 U盘,再接着往下执行;

另一种方法是"异步IO".CPU不等待,只是告诉U盘,"我先去做其他事情,你慢慢写“,于是,后续代码可以立刻接着执行;

思考:很明显使用异步IO来编写程序效率远远高于同步IO,但异步IO的编程模式非常复杂,里面的一些回调模式,轮询模式,后续服务器开发涉及时再进行讲解。
——————————————
 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值