[Moscow.pm] Coro
Alexandr Gomoliako
zzz на zzz.org.ua
Чт Янв 26 10:00:42 PST 2012
> $w = AE::io $fh, 0, $write;
>
> а оно вызовет $read?
Опечатка, я имел ввиду 1, там где $write:
$t = AE::timer 15, 0, $write_timeout;
$w = AE::io $fh, 1, $write;
Т.е. заменит $w на новый, который ждет записи. Получается явный flow
control через AE::io/AE::timer.
> униформным интерфейсом, тогда коллбэки будут кошмаром в коде.
Униформный интерфейс это хорошо, и таймер было бы хорошо иметь внутри
$w, чтобы только в одну точку возвращаться. Но это не самое страшное,
если писать AE::timer и AE::io всегда рядом.
В общем-то кошмар в коде не колбэки создают, а желание хранить их
где-то в объектах и как-то работать с объектами, а не функциями.
Можно абсолютно весь код писать так и без лямбды и без AE::. Это
подход, а не фреймворк.
> Это не считая того что IO::Lambda умеет не только IO, вобщем то - там и
> поллинг, и треды (привет Леману :), и неблокирующий flock как коллбэк, и
> чужеродные лупы типа SNMP которые вообще ни с кем не умеют дружить, и все
> это
> под одним интерфейсом. И еще куча всего. Да, это надстройка и новый
> синтаксис.
> Ну так что ж, у C тоже был новый синтаксис по сравнению с ассемблером :)
Ну так хорошо, я посмотрел в код в лямбде, выглядит поддерживаемо, но
требует изучения внутренностей лямбды, а это уже плохо.
Но в общем случае это все равно подход и если без лямбды, то он
означает, что результат любой функции должен возвращаться в один
анонимный колбэк. И код станет хорошим и останется чистым перлом.
Подробная информация о списке рассылки Moscow-pm