Изучаю ноду. Как я понял, само приложение пашет в одном потоке. При этом для асинхронности свой код надо пулять в event loop с помощью nextTick.
Допустим, есть 7 функций разного назначения, все они делают более менее времязатратную работу. Код в основном потоке использует все эти функции через nextTick. Допустим, подключилось 5 клиентов разом, т.е. в event loop'e 7*5 = 35 задач в очереди.
Короче вопрос - event loop также исполняется в одном отдельном потоке? Если да, то откуда будет прирост производительности сервера и уменьшение времени отклика на запросы, если в loop'e все также последовательно? Объясните пожалуйста.
Засчёт того, что потоки могут выполнять другие асинхронные операции - например, запросить содержимое файла и уснуть, пока дисковая подсистема им не отдаст этот файл и не дёрнет callback. За это время будет выполнен следующий поток из цикла событий.
А если же внутрь этих потоков пихать синхронные функции - то никакого прироста производительности и не будет.