我正在学习linux原生AIO lib(libaio.h),但真的很困惑为什么它被称为异步I / O'。因为在io_submit()之后,你总是需要io_getevents()来轮询直到I / O返回。这个过程仍然可能被阻止,对吗?那么与select / pselect / poll相比,差异/优势是什么?
答案 0 :(得分:0)
使用AIO是有利的,因为I / O直接从用户缓冲区执行,避免了复制到内核缓冲区。如果读取,内核“拥有”缓冲区,并且应用程序在I / O完成之前不得触摸缓冲区。写入相同,内核拥有缓冲区,直到I / O完成,然后才有可用于重用的缓冲区。
这个想法是开始多次传输,而I / O传输正在进行中,你可以去做其他事情。最终,您将SIGIO交付给应用程序,然后您可以检查已完成的I / O.