30 октября 2012 г., 20:50 пользователь Алексей Шруб <[email protected]> написал: > Tue, 30 Oct 2012 10:06:11 +0200 от TheAthlete <[email protected]>: >> В lor (http://www.linux.org.ru/forum/development/4496297 [aio]Юзабельность >> AIO в Linux) пишут, что "POSIX AIO реализован в glibc тредами" > > не очень понял к чему это, я про glibc ничего не говорил, и про POSIX AIO > тоже, я про libaio которое тредов не требует Ну во первых про libaio вы тоже не говорили прямо... а что такое "настоящий ядерный AIO" - пойди догадайся. К примеру, man 7 aio в Linux про POSIX AIO, с одним маленьким пояснением: === Work has been in progress for some time on a kernel state-machine-based implementation of asynchronous I/O (see io_submit(2), io_setup(2), io_cancel(2), io_destroy(2), io_getevents(2)), but this implementation hasn't yet matured to the point where the POSIX AIO implementation can be completely reimplemented using the kernel system calls. ===
Ну и собственно, хоть я и не используем какой бы то ни было aio (мы обычно стараемся минимизировать кол-во операций с диском в работающем приложении), но имею сказать, что: 1. POSIX AIO не полный интерфейс, т.е. не покрывает всех необходимых операций с диском, например нет open, stat и т.п. 2. п.1 полностью относится и к io_submit, io_setup и т.п. + работает не со всеми fs + linux only 3. Единственная возможность работать с fs действительно полностью асинхронно, это потоки (что и реализовал Marc Lehmann в libeio, на основе которой сделан aio в IO::AIO). 4. В node.js, похоже, своя аналогичная libeio реализация (они до 0.5.6 использовали её, но сейчас у них своя libuv), тут я не уверен, надо будет внимательней в исходники глянуть... > > -- > Alexey Shrub > -- > Moscow.pm mailing list > [email protected] | http://moscow.pm.org -- Vladimir Timofeev <[email protected]> -- Moscow.pm mailing list [email protected] | http://moscow.pm.org
