Какова точка/цель Ruby EventMachine, Скрученный Python, или JavaScript Node.js?

Я получил подтвержденный ответ от STL от MSFT :

В отличие от VC, GCC не реализовал random_device недетерминированно в Windows. Boost, поэтому вы можете использовать Boost.Random.

26
задан CCw 29 May 2010 в 03:08
поделиться

3 ответа

Вы можете использовать одну из этих платформ, если вы хотите написать код, который работает в сети.

Например, если вы собирались написать многопользовательскую видеоигру , «настройка программы Java ... для отправки потока для каждого запроса», вероятно, не вариант; манипулирование многими потоками является феноменально сложным, а также плохо работает. Не говоря уже о том, что «просто порождаем кучу потоков» отсутствует куча инструментов управления, которые Twisted et. и др. иметь, как twistd, который обрабатывает журналирование, демонизацию, запуск и завершение работы и т. д.

Или, если вы хотите написать систему автоматизации сборки , была бы полезна возможность асинхронного вызова и управления подпроцессами . Если вы запускаете процесс асинхронно, вы можете легко убить этот процесс и корректно обработать его выход. Если вы породите его, запустив поток и заблокировав его, вы не сможете легко его остановить, поскольку остановка потока небезопасна .

EventMachine и Twisted могут использоваться для написания программ на стороне клиента; возможно, вы пишете приложение с графическим интерфейсом, которое не основано на веб-технологиях, и вы хотите использовать одну и ту же реализацию протокола на клиенте и сервере.

Поскольку вы можете использовать асинхронные фреймворки в самых разных контекстах, возможно, вы захотите использовать их в веб-приложении просто потому, что у вас есть существующий библиотечный код, написанный для какого-то другого приложения с использованием вашей асинхронной фреймворк, который вы хотите использовать. Или вы можете захотеть повторно использовать код вашего веб-приложения в каком-то гипотетическом будущем не-веб-приложении. В этом случае это не так сильно отличается от использования Apache или Tomcat или чего-либо еще с точки зрения функциональности, это просто дает вам более общий, многократно используемый способ организации вашей программы.

19
ответ дан Glyph 28 November 2019 в 07:52
поделиться

Нет стека на соединение. Всего один стек на ядро ​​процессора. Не похоже, что на самом деле он может делать больше чем одну вещь одновременно - почему бы не подождать, пока что-то занято, чтобы переключать задачи, вместо того, чтобы произвольно дергать взад-вперед?

4
ответ дан aredridel 28 November 2019 в 07:52
поделиться

Действительно, фреймворки на основе событий подходят для ситуаций, когда у вас много операций io и меньше операций с процессором, но это определяет большинство веб-страниц, потому что они ждут db. Другими примерами являются чаты или видео, такие как youtube - один стек позволяет одновременно обслуживать больше клиентов. Серверы на основе событий могут обрабатывать десятки или сотни тысяч подключенных клиентов, где такое количество потоков может убить машину. Они менее эффективны, когда у вас действительно есть дела с обработкой.

6
ответ дан 28 November 2019 в 07:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: