我正在研究linux本地AIO库(libaio.h),但对于为什么将其称为“异步I / O”感到非常困惑。由于在io_submit()之后,您始终需要io_getevents()进行轮询,直到I / O返回。该过程仍然可能被阻止,对吧?那么,与select / pselect / poll相比有什么区别/优势?

最佳答案

使用AIO是有利的,因为I / O是直接从用户缓冲区执行的,从而避免了复制到内核缓冲区的情况。如果读取,则内核“拥有”缓冲区,并且在I / O完成之前,应用程序不得触摸缓冲区。与写入相同,内核拥有缓冲区,直到I / O完成,然后缓冲区才可供重用。

这个想法是开始多个传输,并且在I / O传输进行期间,您可以执行其他操作。最终,您将SIGIO交付给应用程序,然后您可以检查完成了哪些I / O。

09-08 01:22