我所理解的是:
POSIX AIO
APIs在<aio.h>
中进行了原型设计,您需要使用librt(-lrt)链接您的程序,而libaio
APIs在<libaio.h>
中,您的程序需要链接libaio(-laio)。
我无法理解的是:
1.内核是否会以不同的方式处理这两种方法?
2.对于使用这两种方法,O_DIRECT
标志是否是必需的?
正如这篇文章中提到的,当使用libaio
时,在没有O_DIRECT
的情况下,libaio
可以正常工作。好的,我明白了,但是:
根据R.Love的Linux系统编程一书所述,Linux仅支持在使用O_DIRECT
打开的常规文件上使用aio(我假设是POSIX AIO)。但是,我编写的一个小程序(aio.h,链接了-lrt),在未使用O_DIRECT
标志打开的文件上调用aio_write
函数时却能够无问题运行。
io_submit()
阻塞的因素,请参考https://dev59.com/E1sW5IYBdhLWcg3wyZ0w#46377629 - Anon