16 октября 2012 г., 22:32 пользователь Daniel Podolsky <onoko...@gmail.com> написал: >> Про асинхронные либы сказали уже много, но либ для работы с форком >> вроде не было. > Чет не могу больше молчать :) > > Смотрите. На сегодняшнем железе многопроцессная модель требует больших > процессорных ресурсов, чем многотредная или событийная, в связи с > высокими расходами на переключение контекста. Ага, конечно ))) Вот у вас нормальный сервер: 2 проца по 6 ядер. 1. Варинт много процессности: Запускается 12 процессов, работающих в неблокирующем режиме. Большую часть времени при нормальном шедулере они будут тусить каждый на своем ядре. Переключений контекста... ну будут ИНОГДА (редко в масштабах циклов процессора, инвалидаций кешей минимум и т.п. и т.д.)
Придумайте, плиз вариант с тредами, который будет быстрей и легче! При этом стоит помнить, что треды шарят адресное пространство, а оно будучи шаренным между процессами, работающими на двух процессорах или даже ядрах требует синхронизации... > > Расходы эти низкими не были никогда, но сейчас все остальное железо > подтянулось настолько, что сохранение-восттановление регистров и > очистка-загрузка процессорного кеша стала занимать заметное время в > общем зачете. При свитчинге тредов происходит тоже самое. > > Событийная модель, в общем случае, сложнее для понимания и написания. > получите-задание-на-открытие-сокета-и-позовите-меня-когда-хендлер-будет-готов-или-произойдет-ошибка-или-случится-таймаут > получите-задание-на-запись-буфера-в-сокет-и-позовите-меня-когда-запись-закончится-или-произойдет-ошибка-или-случится-таймаут > и-так-далее > Очень трудно бывает представить себе алгоритм целиком. Хотя, если > научиться обходиться без этого представления - все порлучается быстро > и просто. Хоть и не быстрее и проще, чем линейное программирование. > > Остались треды. Из всех сред исполнения тредов на сегодняшний день > лучшая - JVM. Это я так думаю :) green-треды это не совсем треды все же ))) Плюс: http://stackoverflow.com/questions/2653458/understanding-javas-native-threads-and-the-jvm и http://stackoverflow.com/questions/258901/how-does-the-sun-jvm-map-java-threads-to-windows-threads Так что современная JVM юзает нативные треды. > > JVM сааааааавсем не означает сегодня java. масса вполне продвинутых > языков компилируются в jvm bytecode и исполняются на ней. к примеру - > Scala. Или Clojure. Или Kotlin. > > Есть смысл обратить пристальное внимание на Clojure - это диалект > Lisp. На него параллельная обработка ложится очень хорошо... > > Как-то так. > -- > Moscow.pm mailing list > moscow-pm@pm.org | http://moscow.pm.org -- Vladimir Timofeev <vovk...@gmail.com> -- Moscow.pm mailing list moscow-pm@pm.org | http://moscow.pm.org