Разница между POSIX AIO и libaio в Linux?

То, что я , кажется, понимаю:

POSIX AIO API прототипы в , и вы связываете свою программу с librt (-lrt), тогда как API libaio в , а ваша программа связана с libaio (-laio).

Чего я не могу понять:

1. По-разному ли ядро ​​обрабатывает любой из этих методов?

2. Обязателен ли флаг O_DIRECT для использования любого из них?

Как упоминалось в этой публикации , libaio отлично работает без O_DIRECT при использовании libaio . Хорошо, понятно, но:

Согласно R.Love's Книга по системному программированию Linux , Linux поддерживает aio (который Я предполагаю, что это POSIX AIO) только для обычных файлов , если они открыты с помощью O_DIRECT . Но это небольшая программа, которую я написал (используя aio.h, связанный с -lrt), которая вызывает aio_write в файле, открытом без флага O_DIRECT , работает без проблем.

50
задан Community 23 May 2017 в 02:17
поделиться