[Moscow.pm] Распараллелить
Daniel Podolsky
onokonem на gmail.com
Вт Окт 16 11:32:27 PDT 2012
> Про асинхронные либы сказали уже много, но либ для работы с форком
> вроде не было.
Чет не могу больше молчать :)
Смотрите. На сегодняшнем железе многопроцессная модель требует больших
процессорных ресурсов, чем многотредная или событийная, в связи с
высокими расходами на переключение контекста.
Расходы эти низкими не были никогда, но сейчас все остальное железо
подтянулось настолько, что сохранение-восттановление регистров и
очистка-загрузка процессорного кеша стала занимать заметное время в
общем зачете.
Событийная модель, в общем случае, сложнее для понимания и написания.
получите-задание-на-открытие-сокета-и-позовите-меня-когда-хендлер-будет-готов-или-произойдет-ошибка-или-случится-таймаут
получите-задание-на-запись-буфера-в-сокет-и-позовите-меня-когда-запись-закончится-или-произойдет-ошибка-или-случится-таймаут
и-так-далее
Очень трудно бывает представить себе алгоритм целиком. Хотя, если
научиться обходиться без этого представления - все порлучается быстро
и просто. Хоть и не быстрее и проще, чем линейное программирование.
Остались треды. Из всех сред исполнения тредов на сегодняшний день
лучшая - JVM. Это я так думаю :)
JVM сааааааавсем не означает сегодня java. масса вполне продвинутых
языков компилируются в jvm bytecode и исполняются на ней. к примеру -
Scala. Или Clojure. Или Kotlin.
Есть смысл обратить пристальное внимание на Clojure - это диалект
Lisp. На него параллельная обработка ложится очень хорошо...
Как-то так.
Подробная информация о списке рассылки Moscow-pm