根据这篇教程,在Linux上可以很容易地使用AIO实现异步磁盘文件I/O,至少从编程/API的角度来看是这样的。但在阅读了这篇教程之前和之后,我读了很多帖子和文章,有些说这是不可能做到的,或者你应该使用具有补丁的libevent以及其他问题。另外一件事是我应该等待信号的循环,但根据这个教程,我可以使用回调机制,这显然使AIO更容易使用。
现在,我甚至不算是一个Linux程序员,我只想找到一种简单的方法,在Linux上支持异步磁盘文件I/O,学习并将其添加到我需要进行个人项目的异步磁盘I/O库中。目前,我在Windows上使用重叠I/O,在非Windows平台上使用I/O工作线程。由于多线程解决方案可能会很棘手,因此我想在Linux上使用AIO来替换它。
那么,按照这篇教程描述的方式使用AIO有什么问题吗?是性能问题吗?使用AIO操作的限制是什么?
p.s. 我不在意代码是否可移植到其他符合POSIX标准的平台,只要它能在主要的Linux发行版上工作。我关心的只是常规的磁盘文件I/O。
谢谢。
aio_read()
等,则会得到这个工作线程解决方案。它是由glibc在用户空间上使用阻塞线程实现的。 - lvellaio_setup()
等函数)。 - lvella