Я знаю, что этот вопрос обсуждался в прошлом в деталях (How is Node.js inherently faster when it still relies on Threads internally?), но я все еще не правильно понимаю модель цикла событий node.js и являюсь однопоточной моделью, как она обрабатывает одновременные запросы.Как модель цикла событий Node.js хорошо масштабируется
Uptil теперь мое понимание: мы получаем запрос IO -> поток создается внутренне узлом.js и запрос IO передается ему -> так как это запрос ввода-вывода, поэтому процессор передает его на контроллер DMA и освобождает этот поток -> этот поток снова входит в пул потоков для обслуживания другого запроса -> DMA все еще выполняет IO, после того, как DMA получит все данные в виде какого-либо события, - это событие захватывается систему node.js, и она помещает поставленную функцию обратного вызова в цикл событий -> всякий раз, когда цикл событий получает возможность выполнить обратный вызов данных, полученных с помощью IO ->, благодаря закрытию, функция обратного вызова выполняется на извлеченных данных только по обратному вызову
Так что этот процесс продолжается многократно. Пожалуйста, кто-то пролить свет на мое понимание и предоставить некоторую информацию
Хорошо, вы четко понимаете, как работает eventloop, я не уверен, что мы можем сказать, что это сделает его * click * для вас. В то время как происходят события, такие как взаимодействие с базами данных, доступ к файлам и т. Д., Цикл событий продолжается, обрабатывая другие запросы, ожидая завершения указанных событий. Эти события происходят в отдельных потоках системы, а не в узле. –
Может быть, ответ здесь поможет? http://stackoverflow.com/questions/22887216/how-does-a-single-threaded-event-driven-webserver-like-node-js-work-at-the-soc –
Я действительно считаю, что мое общее понимание ясное ... но я ищу более тонкие детали ... когда я говорю «так как это запрос ввода-вывода, поэтому процессор передает его контроллеру DMA и освобождает этот поток -> этот поток снова входит в пул потоков для обслуживания другого запроса «это правильно и является ли причиной меньшего количества потребляемых потоков (следовательно, меньше использования памяти) в узле? В других системах, таких как java, если я кодирую одну и ту же логику, то передаю запрос IO в поток, тогда этот поток будет ждать, пока запрос не будет завершен? – JackSparrow