免费注册 查看新帖 |

Chinaunix

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

[技术动态] 大家有曾经见过使用aio的代码么? [复制链接]

论坛徽章:
7
天蝎座
日期:2013-09-28 10:45:42双子座
日期:2013-10-16 16:27:09射手座
日期:2013-10-23 10:21:32处女座
日期:2014-09-17 16:44:332015年亚洲杯之巴林
日期:2015-04-09 17:28:01冥斗士
日期:2015-11-26 16:19:0015-16赛季CBA联赛之山东
日期:2018-03-02 23:59:31
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-07-17 10:37 |只看该作者 |倒序浏览
本帖最后由 cxytz01 于 2013-07-17 10:39 编辑

大家有曾经见过使用aio的代码么?
看aio,都说aio没有完善的实现机制,还不够成熟,极少使用。请问哪位同仁有曾经见过aio的代码吗?
  1. man aio.h    --异步io
  2.               int      aio_cancel(int, struct aiocb *);
  3.               int      aio_error(const struct aiocb *);
  4.               int      aio_fsync(int, struct aiocb *);
  5.               int      aio_read(struct aiocb *);
  6.               ssize_t  aio_return(struct aiocb *);
  7.               int      aio_suspend(const struct aiocb *const[], int,
  8.                            const struct timespec *);
  9.               int      aio_write(struct aiocb *);
  10.               int      lio_listio(int, struct aiocb *restrict const[restrict], int,
  11.                            struct sigevent *restrict);
复制代码

论坛徽章:
4
水瓶座
日期:2013-09-06 12:27:30摩羯座
日期:2013-09-28 14:07:46处女座
日期:2013-10-24 14:25:01酉鸡
日期:2014-04-07 11:54:15
2 [报告]
发表于 2013-07-17 11:23 |只看该作者
没见过,只是写磁盘比较高校。

论坛徽章:
7
天蝎座
日期:2013-09-28 10:45:42双子座
日期:2013-10-16 16:27:09射手座
日期:2013-10-23 10:21:32处女座
日期:2014-09-17 16:44:332015年亚洲杯之巴林
日期:2015-04-09 17:28:01冥斗士
日期:2015-11-26 16:19:0015-16赛季CBA联赛之山东
日期:2018-03-02 23:59:31
3 [报告]
发表于 2013-07-17 11:32 |只看该作者
回复 2# linux_c_py_php

不是写磁盘比较高效。

aio与非aio的read, write相比, read,write不管是否在阻塞与非阻塞模式下(fcntl, nonblock),在进行数据传输时1.read需要等待内核将数据copy到用户空间,这时read就必需等待这个过程的完成,也就是用户进程阻塞了。2.write也是如此,必需等待用户空间的数据copy到内核空间,write此时也会阻塞。

而aio的过程就不需要等待,当数据在用户空间和内核空间copy完成之后,会产生一个通知。


   

论坛徽章:
4
水瓶座
日期:2013-09-06 12:27:30摩羯座
日期:2013-09-28 14:07:46处女座
日期:2013-10-24 14:25:01酉鸡
日期:2014-04-07 11:54:15
4 [报告]
发表于 2013-07-17 12:30 |只看该作者
cxytz01 发表于 2013-07-17 11:32
回复 2# linux_c_py_php

不是写磁盘比较高效。


你说的理论大家都懂的, proactor在linux下就是aio, 在win32下就是IOCP, 现在用epoll等都是reactor.

AIO之前就研究过一次, 据说对磁盘I/O有奇效, 网络没意义因为是看网速的.

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
5 [报告]
发表于 2013-07-17 16:02 |只看该作者
沒用過,很早以前曾經想在服務程序上用下異步IO的,但是當時看到的文章都說異步IO在linux上還沒有完整的實現在網絡接口上,只能用於讀寫磁盤文件,對於我工作裏的應用沒啥意義。

论坛徽章:
1
申猴
日期:2013-09-09 10:22:56
6 [报告]
发表于 2013-07-23 17:00 |只看该作者


nignx里面有

论坛徽章:
1
程序设计版块每日发帖之星
日期:2015-09-23 06:20:00
7 [报告]
发表于 2013-07-23 18:33 |只看该作者
这是glibc里面的aio, 用thread来模拟实现的, 另名POSIX AIO, 不是true async io.  libaio里的是true aync io,  UNIX/Linux的kernel没有统一的io model, 普遍对aync io 支持的不好。

论坛徽章:
4
水瓶座
日期:2013-09-06 12:27:30摩羯座
日期:2013-09-28 14:07:46处女座
日期:2013-10-24 14:25:01酉鸡
日期:2014-04-07 11:54:15
8 [报告]
发表于 2013-07-23 18:45 |只看该作者
给你个连接, 通过它你可以了解到AIO的历史:http://www.wzxue.com/linux-kerne ... %E5%A5%87%E8%91%A9/
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP