Спасибо за чёткий ответ. Совсем позабылось, что в Ruby и в node-fibers поддержка из коробки.
В таком случае я бы Coro использовать не стал. 26 мая 2012 г., 0:00 пользователь Vladimir Timofeev <[email protected]>написал: > 25 мая 2012 г., 15:43 пользователь Ivan Petrov > <[email protected]> написал: > > спасибо всем за флейм, а все-таки о сабже. > > Никто не делал HTTPD на короутинах? посоветуйте что-то готовое? > > > > я нашел Corona на cpan. есть отзывы? > > -- > > Moscow.pm mailing list > > [email protected] | 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 <[email protected]> > > # Не говорить с человеком, с которым можно говорить, значит потерять > человека; > # говорить с человеком, с которым нельзя говорить, значит терять слова. > # Умный человек не теряет человека и не теряет слов. > #-- Конфуций > -- > Moscow.pm mailing list > [email protected] | http://moscow.pm.org >
-- Moscow.pm mailing list [email protected] | http://moscow.pm.org
