25 мая 2012 г., 15:43 пользователь Ivan Petrov <i.petro.77...@gmail.com> написал: > спасибо всем за флейм, а все-таки о сабже. > Никто не делал HTTPD на короутинах? посоветуйте что-то готовое? > > я нашел Corona на cpan. есть отзывы? > -- > Moscow.pm mailing list > moscow-pm@pm.org | http://moscow.pm.org
Проверил сейчас Corona, вроде работает на "Hello, world!", на чем-то сложном долго проверять. Даже не свалилось при LIBEV_FLAGS=8 - это включение kqueue на FreeBSD в дефолтовом цикле у libev. Детально я все это щупал года 1.5 - 2 назад. Тогда было так (целевая платформа FreeBSD): * Coro - сплошные core-дампы на FreeBSD, получались только простейшие вещи из документации, шаг вправо, шаг влево - core. * Corona - не работала вообще * EV - основной цикл в kqueue не работал, приходилось делать его в select, а уже в него вставлять embedded loop на kqueue для основной работы. (А еще ему нужен линкинг с pthreads для pthread_atfork, что добавляло балаган в порядок следования "use" для разных XS-модулей) Теперь мысли в слух. В принципе контекст выполнения в Perl довольно "развесистый" - штук 5 стеков + дофига глобальных сущностей, типа $1,$2 и т.п. А прерывание нормальной цепочки выполнения вставкой cede потребует сохранения этого стейта, что наверняка не быстро (если сравнивать со "звездообразным" графом передачи управления при работе с eventloop'ами). Плюс не очень безопасно, т.к. можно что-то забыть, плюс головная боль, т.к. все это может меняться от версии к версии. Поэтому мое имхо таково: 1. Для серьезных проектов я лично Coro юзать пока не собираюсь. 2. Без поддержки в языке, короутины будут медленнее, чем eventloop. И для меня это замедление не стоит "спрямления" логики выполнения из коллбэков в прямолинейный код. -- Vladimir Timofeev <vovk...@gmail.com> # Не говорить с человеком, с которым можно говорить, значит потерять человека; # говорить с человеком, с которым нельзя говорить, значит терять слова. # Умный человек не теряет человека и не теряет слов. #-- Конфуций -- Moscow.pm mailing list moscow-pm@pm.org | http://moscow.pm.org