Я экспериментировал с асинхронными сокетами сети Linux (aio_read и др. в aio.h/librt), и одна вещь, которую я пытался узнать, состоит в том, являются ли они нулевой копией или нет. В значительной степени все, что я считал до сих пор, обсуждает файловый ввод-вывод, тогда как его сеть I/O я интересуюсь.
AIO является чем-то вроде боли для использования, и я подозреваю, является непортативным, так задается вопросом ли, который стоит упорно продолжить заниматься с ним. Нулевая копия является примерно единственным преимуществом (альбит главный в моих целях), это имело бы по (неблокированию) select/epoll..
В GLIBC AIO реализован с использованием POSIX-потоков и обычного pread
-вызова. Так что это, вероятно, дороже, чем select
или epoll
и самостоятельное выполнение read
или recv
.