Тема: Node.js
Показать сообщение отдельно
  #50 (permalink)  
Старый 24.05.2010, 22:29
Аватар для kurokikaze
Новичок на форуме
Отправить личное сообщение для kurokikaze Посмотреть профиль Найти все сообщения от kurokikaze
 
Регистрация: 15.01.2010
Сообщений: 9

Сообщение от Ruslan Посмотреть сообщение
если можно детальней на счет потоков, оч. интересно
В "обычной" реализации (полагаю, имеется в виду Апач) при поступлении запроса порождается тред (поток), который этот запрос обрабатывает. ОС быстро-быстро переключается между этими потоками (ну и распределяет их между ядрами процессора), поэтому запросы обрабатываются более-менее одновременно.

А вот в Node всё происходит немного по другому. Там для обработки множества запросов используется всего один тред и Event Loop. В Node есть пул событий, ждущих обработки. Это входящие соединения, ответы от серверов, прочитанные с диска фрагменты файлов и т.п. Обработчики этих событий выполняются по очереди одним потоком сервера (одним контекстом движка V8). При этом не тратится время на переключение туда-сюда между кучей тредов.

Один из главных принципов Node — обработчики должны возвращать управление как можно скорее. Если обработчик события должен например прочитать файл, он не сидит и не ждёт пока с жёсткого диска приедут нужные ему байты (как делал бы тред в PHP). Он начинает чтение файла и оставляет обработчик, который будет иметь дело с данными - и сразу же возвращает управление в event loop.
Ответить с цитированием