免费注册 查看新帖 |

Chinaunix

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

关于linux下的异步io,有几个疑问 [复制链接]

论坛徽章:
0
21 [报告]
发表于 2011-08-06 15:17 |只看该作者
epoll是同步,iocp才是异步。如果讲效率,那么都不错。

论坛徽章:
0
22 [报告]
发表于 2011-08-08 15:09 |只看该作者
epoll是同步,iocp才是异步。如果讲效率,那么都不错。
鸡丝拌面 发表于 2011-08-06 15:17


epoll应该算是数据同步吧!

论坛徽章:
15
射手座
日期:2014-11-29 19:22:4915-16赛季CBA联赛之青岛
日期:2017-11-17 13:20:09黑曼巴
日期:2017-07-13 19:13:4715-16赛季CBA联赛之四川
日期:2017-02-07 21:08:572015年亚冠纪念徽章
日期:2015-11-06 12:31:58每日论坛发贴之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-07-12 22:20:002015亚冠之浦和红钻
日期:2015-07-08 10:10:132015亚冠之大阪钢巴
日期:2015-06-29 11:21:122015亚冠之广州恒大
日期:2015-05-22 21:55:412015年亚洲杯之伊朗
日期:2015-04-10 16:28:25
23 [报告]
发表于 2011-08-08 15:16 |只看该作者
epoll是同步,iocp才是异步。如果讲效率,那么都不错。
鸡丝拌面 发表于 2011-08-06 15:17



    什么是异步?epoll为什么是同步?

论坛徽章:
0
24 [报告]
发表于 2011-08-08 16:02 |只看该作者
什么是异步?epoll为什么是同步?
yulihua49 发表于 2011-08-08 15:16



    你说啥是异步?我认为异步是io任务完成后再通知,而epoll是告诉你可以read或write了。

论坛徽章:
0
25 [报告]
发表于 2011-08-08 17:19 |只看该作者
从概念上epoll算是异步,但没有IOCP的完成回调,但实现这种完成回调机制应该是要付出一些代价的

论坛徽章:
0
26 [报告]
发表于 2011-08-08 18:09 |只看该作者
本帖最后由 Missex 于 2011-08-08 18:29 编辑
你说啥是异步?我认为异步是io任务完成后再通知,而epoll是告诉你可以read或write了。
鸡丝拌面 发表于 2011-08-08 16:02



不错 epoll仅仅是通知机制,  异步机制是, 发起一个读或者写, 然后系统通知你读写的结果,读写了多少, 成功或者失败

论坛徽章:
15
射手座
日期:2014-11-29 19:22:4915-16赛季CBA联赛之青岛
日期:2017-11-17 13:20:09黑曼巴
日期:2017-07-13 19:13:4715-16赛季CBA联赛之四川
日期:2017-02-07 21:08:572015年亚冠纪念徽章
日期:2015-11-06 12:31:58每日论坛发贴之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-07-12 22:20:002015亚冠之浦和红钻
日期:2015-07-08 10:10:132015亚冠之大阪钢巴
日期:2015-06-29 11:21:122015亚冠之广州恒大
日期:2015-05-22 21:55:412015年亚洲杯之伊朗
日期:2015-04-10 16:28:25
27 [报告]
发表于 2011-08-09 15:07 |只看该作者
本帖最后由 yulihua49 于 2011-08-09 15:18 编辑
不错 epoll仅仅是通知机制,  异步机制是, 发起一个读或者写, 然后系统通知你读写的结果,读写了多少, ...
[url]



      好 像 不 是 这 个 定义。异步操作(区别于异步串行接口之类),指,任务发布了,不等结果。在适当的时候(轮询,或中断,或事件通知),取得结果。
所以,不能说哪个是同步机制,哪个是异步。他们是异步操作的通知工具。

我们把epoll用在异步操作场合:
转发器:
从客户端收到消息,发送给服务器。不知道服务器何时能返回。线程不等待了,交给epoll。这个线程就干别的去了。这就是异步。
等服务器回话了,就会有一个线程处理它,收服务器的消息,返回给客户端。
这种流程不知CPIO如何处理?

论坛徽章:
0
28 [报告]
发表于 2011-08-09 15:10 |只看该作者
从概念上epoll算是异步,但没有IOCP的完成回调,但实现这种完成回调机制应该是要付出一些代价的
shanehan 发表于 2011-08-08 17:19



    从实现上讲epoll是有aio的特性的,是它挂的fd反过来通知epollfd的。而iocp通过GetQueuedCompletionStatus抱死在那里其实性能也好不到哪里去。同步异步,其实没有必要恰得那么死,win的所谓overlapped io可以通过callback通知(这个算是严格异步),也可关联一个event来等(这个算啥呢,杂种? )。

论坛徽章:
0
29 [报告]
发表于 2011-08-09 15:13 |只看该作者
好 像 不 是 这 个 定义。异步操作(区别于异步串行接口之类),指,任务发布了,不等结果。在 ...
yulihua49 发表于 2011-08-09 15:07



    你说得其实不差。同步就是收/发一坨xx,然后等同步信号,再收/发另一坨xx;不是这么的就算异步。自从io复用及其进化体出来后,同步异步是你中有我,我中有你了。

论坛徽章:
15
射手座
日期:2014-11-29 19:22:4915-16赛季CBA联赛之青岛
日期:2017-11-17 13:20:09黑曼巴
日期:2017-07-13 19:13:4715-16赛季CBA联赛之四川
日期:2017-02-07 21:08:572015年亚冠纪念徽章
日期:2015-11-06 12:31:58每日论坛发贴之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-07-12 22:20:002015亚冠之浦和红钻
日期:2015-07-08 10:10:132015亚冠之大阪钢巴
日期:2015-06-29 11:21:122015亚冠之广州恒大
日期:2015-05-22 21:55:412015年亚洲杯之伊朗
日期:2015-04-10 16:28:25
30 [报告]
发表于 2011-08-09 15:22 |只看该作者
本帖最后由 yulihua49 于 2011-08-09 15:47 编辑
从概念上epoll算是异步,但没有IOCP的完成回调,但实现这种完成回调机制应该是要付出一些代价的
shanehan 发表于 2011-08-08 17:19


不能完成回调啊。线程抱死了!就是应该等通知再找一个线程callback.

10000个客户端连接,16个工作线程,160个服务器连接。线程从不抱死在任务上。每秒可转发60000个客户请求,120000次递送。线程抱死了,怎么玩?


这样看,CPIO是同步的,要等完成嘛。epoll是真正异步的。

走题了。楼主问读写文件。大多数读写文件用不着这个。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP