Почему основанные на событии сетевые приложения по сути быстрее, чем потоковые?

К сожалению, мы предоставляем API PATCH для загрузки / обновления изображения проекта BIM360, но API для извлечения образа проекта не существует, это уже отслеживается внутри, я добавлю больше комментариев для этого запроса.

5
задан dowski 14 November 2008 в 13:48
поделиться

3 ответа

Я думаю, что событие, базирующееся по сравнению с базирующимся потоком, не является вопросом - это - неблокирование Мультиплексированный ввод-вывод, Выбираемые сокеты, решение по сравнению с решением для пула потоков.

В первом случае Вы обрабатываете весь вход, который входит независимо от того, что использует его - таким образом, нет никакого блокирования на чтениях - единственный 'слушатель'. Единственный слушатель распараллеливает данные передач к тому, что может быть рабочими потоками различных типов - а не один для каждого соединения. Снова, никакое блокирование при записи любых из данных - так обработчик данных не может просто работать с ним отдельно. Поскольку этим решением являются главным образом чтения/записи IO, оно не занимает много процессорного времени - таким образом, Ваше приложение может взять это, чтобы сделать независимо от того, что оно хочет.

В решении для пула потоков у Вас есть отдельные потоки, обрабатывающие каждое соединение, таким образом, они должны совместно использовать время к контекстному переключению в и - каждое 'слушание'. В этом решении ЦП + операция в секунду IO находится в том же потоке - который получает интервал времени - таким образом, Вы заканчиваете тем, что ожидали на операции в секунду IO для завершения на поток (блокирование), которое могло традиционно быть сделано, не используя процессорное время.

Google для неблокирования IO для большего количества детали - и Вы можете prob находить некоторые сравнения по сравнению с пулами потоков также.

(если кто-либо может прояснить эти мысли, не стесняйтесь),

5
ответ дан 14 December 2019 в 01:20
поделиться

Это действительно зависит, что Вы делаете; основанное на событии программирование, конечно, коварно для нетривиальных приложений. Быть веб-сервером является действительно очень тривиальной хорошо понятой проблемой и и событийно-ориентированная и потоковая работа моделей вполне прилично над современным OSs.

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

1
ответ дан 14 December 2019 в 01:20
поделиться

Это не о потоках действительно. Это о способе, которым потоки привыкли к запросам на обслуживание. Для чего-то как lighttpd у Вас есть единственный поток что сервисные многочисленные связи через события. Для более старых версий апача у Вас был процесс для каждого подключения, и процесс проснулся на входящих данных, таким образом, Вы закончили с очень большим количеством, когда было много запросов. Теперь однако с апачем MPM событие, базирующееся, также посмотрите апачское событие MPM.

0
ответ дан 14 December 2019 в 01:20
поделиться
Другие вопросы по тегам:

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