[Moscow.pm] fs aio без (i)threads?

Vladimir Timofeev vovkasm на gmail.com
Чт Июн 7 13:41:01 PDT 2012


7 июня 2012 г., 23:47 пользователь Peter Vereshagin
<peter на vereshagin.org> написал:
> Hello.
>
> 2012/06/07 12:00:41 -0700 moscow-pm-request на pm.org => To moscow-pm на pm.org :
>> >    - IO::AIO требует perl-threads. От threads в perl отказался и ни разу ещё не
>> >      пожалел :)
>>
>> А с чего вы решили что IO::AIO требует perl-threads (имеются ввиду
>> конечно ithreads)? ;-)
>
> пригляделся -- pthreads. Тем более не хочу их пользовать в perl. ;-)
>
>> >    - IO::Async не видно как в нём открывать каталоги
>> Это не async, это nonblocking
>
> Мне не шашечки, мне ехать. ;-)
Не поедет без шашечек...

>
>> >    - EV не видно чтобы было так же просто. Или есть сэмплы кода?
>> Это тоже не async
>
> Но работать типа всё равно будет? Тогда можно взять и сделать типа попроще как в ноде. ;-)

Ну вот как оно будет работать? ;-)
С точки зрения оси, дескриптор, который связан с локальным файлом
ВСЕГДА готов к чтению... и у вас read из него в неблокирующем режиме
все равно подождет, пока данные приедут с диска. То же с записью.
Не нравится Лехман, вот еще
http://stackoverflow.com/questions/3461540/libevent2-and-file-io

>
>> >    - POE устарело.
>> Во первых не устарело, но скорей всего тоже не то, что вам надо )))
>>
>> Вот здесь Marc Lehmann достаточно подробно объясняет в чем разница
>> между aio и nonblocking
>> http://pod.tst.eu/http://cvs.schmorp.de/AnyEvent/lib/AnyEvent/IO.pm#ASYNCHRONOUS_VS_NON_BLOCKING
>
> так подробно, что самому сложно (сиречь всё равно) толкать речи о том, в чём разница:
>
>    In fact, those two terms are not well defined, which often makes it hard
>    to even talk about the difference.
>
> да и вообще, смещение понятий в духе "здравый смысл против строгости и
> предупреждений", а также "Коро -- единственные настоящие треды-нитки в perl"
>
> для этого индивида делает маловесомыми его толкования каких-либо понятий и различий между ними лично для меня.
>
>> > В самом идеале бы хорошо бы по типу однопроцессного однопоточного File::Find,
>> > например, но чтобы пока одна голова на дисках делает seek, можно было бы с
>> > другой снимать что оно прочитало.
>> Для этого вам нужен тот или иной вариант биндингов к aio (честно
>> говоря не знаю для Perl ничего, кроме IO::AIO и обертки вокруг него в
>> AnyEvent на эту тему, да и он только что отказался проходить тесты на
>> FreeBSD9).
>
> Во-во.
>
>> Но если вы используете Linux,
>
> Нихачу.
>
>> то посмотрите на AnyEvent::IO
>
> Оно обёртывает IO::AIO -- те ж яйцы, только сбоку.
> Хоть бы кто рефлекс какой иль лямбду к этому делу приспособил, штоль. Только
> без тредов и лишних процессов.

Возьмите man aio и сделайте сами тонкий враппер... так поедет, иначе
никак ))) Если на CPAN положите, по крайней мере я спасибо скажу...

>
> --
> Peter Vereshagin <peter на vereshagin.org> (http://vereshagin.org) pgp: A0E26627
> --
> Moscow.pm mailing list
> moscow-pm на pm.org | http://moscow.pm.org


ЗЫ. В ноде для файлового io используется библиотека eio (того самого
Лехмана). Она же в IO::AIO.

-- 
Vladimir Timofeev <vovkasm на gmail.com>


Подробная информация о списке рассылки Moscow-pm