免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4495 | 回复: 0
打印 上一主题 下一主题

异步/同步IO , 阻塞/非阻塞IO,epoll和aio [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-12-30 15:41 |只看该作者 |倒序浏览
   (以下文字只是个人在开发的感悟,如有不正确的地方请不吝指出)

   异步IO就是把IO提交给系统,让系统替你做,做完了再用某种方式通知你(通过信号,或者其他异步方式

通知,这时候,操作系统已经帮你完成IO操作,具体来说就是你那个作为传入参数的的buffer的指针所指向

的空间已经读到了数据或者你的buffer的数据已经写出去了)

   非阻塞IO就是你要通过某种方式不定时地向系统询问你是否可以开始做某个IO( 轮询啊 ),当可以开始

后,是要自己来完成IO(也就是说还要自己调用一次read来填充buffer或者write来不buffer的数据写出

去)

   epoll和aio(这里的aio是指linux 2.6内核后提供的aio api)区别:
   
   aio是异步非阻塞的。其实是aio是用线程池实现了异步IO。
   
   epoll在这方面的定义上有点复杂,首先epoll的fd集里面每一个fd都是非阻塞的,但是epoll(还

select poll )在调用时阻塞等待fd可用,然后epoll只是一个异步通知机制,只是在fd可用时通知你,并

没有做任何IO操作,所以不是传统的异步。


参考资料:
http://blog.csdn.net/sparkliang/archive/2009/11/19/4836536.aspx
http://www.cnblogs.com/OnlyXP/archive/2007/08/10/851222.html
http://www.ibm.com/developerworks/cn/linux/l-async/
http://hi.baidu.com/epeak/blog/item/dfe10df51fdf072dbc310997.html




本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/109128/showart_2135578.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP