[Moscow.pm] чем плох девелоперский веб-сервер catalyst
Монашёв Михаил
postmaster на softsearch.ru
Чт Дек 11 07:57:26 PST 2008
Здравствуйте, Анатолий.
> Вообще, ═в ═теории, наверное можно написать такой перл (седьмой? :-)),
> который ═сам ═бы ═внутри ═себя ═мультиплексировал запущенные процесс и
> переписывать ═под ═мультиплексирование ═приложения не нужно было бы. А
> сейчас ═конечно ═под Каталист HTTP-движок с мультиплексированием никак
> не сделать.
> Вот это вы сильно сказали, "переписывать не нужно было бы" :)
Даже простейший линейный скрипт параллелится на несколько корок.
Всегда найдутся небольшие операции, которые можно выполнять независимо
от других.
Пример 1:
$y = ($a+$b)*($c+$d);
то, что в скобках не зависит никак от того, что в других скобках и
может выполняться параллельно.
Пример 2:
for ($i=1;$i<100;$i++){
$x +=$i
}
for ($j=1;$j<200;$j++){
$y++;
}
куски кода друг от друга совсем не зависят и могут выполняться
параллельно.
Пример 3:
набираем на одной консоли
perl 1.pl
набираем на другой консоли
perl 2.pl
у нас запускаются 2 процесса. А мог бы запуститься 1. Проблема лишь в
том, что перл пока не умеет при ожидании получения данных из сокета
или с диска делать что-то ещё. Он тупо ждёт, занимая оперативку и
приходится использовать либы для асинхроннхронной работы, чтобы
написать плохо читабельную и трудно отлаживаемую программу. Также перл
пока не умеет находит независимые друг от друга куски кода и выполнять
их параллельно на нескольких корах. Так что можно сильно ускорится не
переписывая перловые скрипты. Нужно лишь "немного :-)" допилить перл.
> Линейное программирование не может выполняться асинхронно, поэтому оно линейное.
> Поэтому в Perl 6 есть: sync { } и async { }
Есть подозрение, что интерпретатор сам может определить какой код в
каком режиме можно исполнять. Только он пока этому не научился.
> Есть реализация для mysql асинхронного клиента, но чтобы ее
> прикрутить к каталисту можно офигеть :)
Дай ссылочку плз.
--
С уважением,
Монашёв Михаил, SoftSearch.ru
mailto:postmaster на softsearch.ru
ICQ# 166233339
http://michael.mindmix.ru/
Без бэкапа по жизни.
Подробная информация о списке рассылки Moscow-pm