免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: NewCore
打印 上一主题 下一主题

关于linux下异步IO操作的问题 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2008-11-10 17:07 |只看该作者
mark

论坛徽章:
0
12 [报告]
发表于 2008-11-11 19:57 |只看该作者

回复 #8 timespace 的帖子

I/O操作能否立即完成,请问这一点我们是依靠什么来判断的?
在代码上能表现出来吗?

论坛徽章:
11
技术图书徽章
日期:2014-03-01 14:44:34天蝎座
日期:2014-05-21 22:11:59金牛座
日期:2014-05-30 17:06:14
13 [报告]
发表于 2008-11-11 21:18 |只看该作者

回复 #12 怪怪虎 的帖子

非阻塞IO返回的EAGIN就提供了这个信息

论坛徽章:
0
14 [报告]
发表于 2008-11-11 21:43 |只看该作者

回复 #13 timespace 的帖子

谢谢。清楚了。

论坛徽章:
0
15 [报告]
发表于 2009-01-09 15:47 |只看该作者
不错,不错,长知识。

论坛徽章:
0
16 [报告]
发表于 2010-08-23 17:09 |只看该作者
一天一篇精华帖,工作流汗不流血!

论坛徽章:
0
17 [报告]
发表于 2010-10-29 22:00 |只看该作者
I/O的阻塞和非阻塞与同步I/O和异步I/O是不一样的:

1. I/O的阻塞和非阻塞
    当对I/O进行操作(read,write...)的时候,可以设置该I/O为阻塞或者非阻塞,倘若设置为阻塞,操作函数只有当条件达到(可读或者可写...)的时候才会返回;倘若设置为阻塞的方式,不管条件是否达到,立即返回(当条件没达到时,也立即返回错误)。

2. 同步I/O和异步I/O
    对于同步I/O,根据程序,我们可以预测到程序到哪一步执行对I/O的操作,不管该I/O时阻塞或者非阻塞,只有该操作I/O的函数返回的时候,才会执行下一个的操作。
    而对于异步I/O而言,我可以对内核发送一个请求,告诉内核,当我们所期望的I/O条件发生的时候,内核向我发送一个信号,当I/O条件发生的时候,内核行进程发送一个信号,程序接收到信号后,即将正在执行的程序挂起,然后调用对I/O的处理函数,处理完后,接着执行挂起的进程。在进程等待I/O事件发生的这一段时间中,进程依然正常执行。
    因为我们不知道I/O的条件何时发生,所以我们没有办法预测异步I/O的I/O处理函数何时执行,此所谓的异步。

论坛徽章:
0
18 [报告]
发表于 2010-10-30 16:07 |只看该作者
一天一篇精华帖,工作流汗不流血!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP