我最近在研究Linux IO模型,经常听到像Windows IOCP一样,Linux也有自己的aio模型实现:Glibc aio和内核aio。 问题: (1)当人们说“Linux本地aio”时,指的是哪个模型? (2)我听到了两个不同的术语,“Linux aio”和“Linux本地aio”。它们是相同的东西,还是表示不同的实现?
Linux本地AIO是内核AIO。其接口为io_setup(2), io_submit(2), io_getevents(2)以及其他一些函数调用。当人们谈论“Linux AIO”时,他们可能指的是“Linux本地AIO”——尽管谁知道呢。毕竟这是互联网。Posix AIO则完全不同。它在用户空间中使用线程实现。请参见Linux上POSIX AIO和libaio之间的区别?的顶部答案,了解Posix AIO与Linux内核AIO之间差异的很好且经过审查的描述。