Почему Node.js называют single-threaded, но при этом он обрабатывает много запросов?

Middle
441 просмотров
AFK Offer AI

JavaScript код в Node.js выполняется в одном потоке, но тяжёлые операции (I/O, сеть, диск) делегируются libuv, который использует thread pool (4 потока по умолчанию) и ОС-механизмы (epoll/kqueue). Пока один запрос ждёт ответа от базы данных, event loop обслуживает другие запросы. Поэтому Node.js отлично справляется с I/O-bound нагрузкой, но плохо с CPU-intensive задачами.

Следующий вопрос

Что такое Express.js и для чего он используется?