разница между событием l oop в nodeja и событием l oop в браузере - PullRequest
0 голосов
/ 30 марта 2020

В браузере, когда мы запускаем веб-приложение, запускается событие l oop, которое отслеживает эту вкладку и обрабатывает асинхронные задачи. Каждая вкладка имеет свое собственное событие l oop, и каждая вкладка обрабатывается в браузере.

Я запутался в архитектуре node.js event l oop.

Предположим, у меня есть node.js приложение, и я разверну его на сервере. Когда я делаю запрос, мой запрос запускает node.js процесс, и этому событию выделяется одно событие l oop (т. Е. Он будет обрабатывать все таймеры, отмечать все асинхронные задачи и поведение).

Когда я сделав еще один запрос, он запустит еще один node.js процесс моего приложения, и к нему будет прикреплено еще одно событие l oop ... по аналогии с вкладками браузера (каждая вкладка является отдельным процессом и имеет свое собственное событие l oop). Я прав или мне чего-то не хватает? И, пожалуйста, не предоставляйте ссылку на YouTube для просмотра видео l oop. Моя основная цель - очистить мою ментальную модель от node.js.

Ответы [ 2 ]

1 голос
/ 30 марта 2020

Когда я сделаю запрос, мой запрос запустит процесс nodejs и этому событию будет выделено одно событие l oop ie (оно будет обрабатывать все таймеры, тики, все асинхронные такты и поведение) , Когда я делаю еще один запрос, он запускает еще один nodejs процесс моего приложения, и к нему прикрепляется еще одно событие l oop ... по аналогии с вкладками браузера (каждая вкладка является отдельным процессом и имеет свой собственный событие l oop).

Нет, если только у вас нет установки, которая делает это для вас. Node.js этого не делает.

При запуске веб-сервера на основе Node.js процесс single с событием single l oop обслуживается одним потоком запускается. Подробнее здесь, в Node.js документации . Node.js обрабатывает несколько одновременных запросов, используя асинхронный ввод-вывод. Поток может запустить операцию записи для ответа на один запрос, запустить операцию чтения для чтения другого запроса, и эти операции (ни одна из которых не использует поток JavaScript [в основном) выполняются параллельно.

Если вы Если у вас есть долгосрочные JavaScript задачи, которые ваш Node.js сервер должен выполнять в ответ на запросы, вы можете передать их работникам .

0 голосов
/ 30 марта 2020

Когда вы запускаете приложение, используя nodejs, запускается один процесс, который порождает пул потоков для обработки io.

Существует одно событие l oop, которое получает данные из потоков io в ответ на запросы. Если событие l oop заблокировано, запросы помещаются в очередь до тех пор, пока не получат их.

Для выполнения sh this https://github.com/libuv/libuv

используется библиотека libuv
...