Linux AIO / io_submit / io_getevents / на fifo (именованные каналы)

Я должен написать много данных в трубу. Могу ли я использовать вызовы Linux io_submit/io_getevents для записи в именованные io_submit/io_getevents или он определен только для обычных файлов. Я пытался найти какой-либо документ, который объясняет AIO по трубам, но не смог. Может кто-нибудь помочь здесь.

В основном меня беспокоит поле aio_offset в struct iocb . Что если пакет данных со смещением 8096 запланирован для чтения / записи перед пакетом данных со смещением как 4096.

Linux AIO не ограничивается обычными файлами – его можно использовать для специальных файлов блочных устройств. Я ожидаю, что записи AIO не могут использоваться на каналах, потому что каналы не способны искать.

IOCB_CMD_PWRITE

pwrite () записывает количество байтов из буфера, начинающегося с buf, в дескриптор файла fd со смещением. Смещение файла не изменяется.

Файл, на который ссылается fd, должен быть в состоянии искать.

Смысл AIO заключается в том, чтобы иметь возможность ставить в очередь несколько прямых операций записи (или чтения) ввода-вывода на блочное устройство без необходимости использования streamов.

Чтобы повысить производительность массовых передач по каналу, я бы предложил увеличить размер буфера канала с 4 КБ до не более 64 КБ … за исключением того, что 64 КБ уже используется по умолчанию в современном Linux.