Известно, что node.js внутренне обрабатывает асинхронные вызовы, и программисту никогда не нужно заботиться о том, что происходит в кулуарах. Насколько я знаю, даже если все говорят, что node.js - это только один поток, внутренние библиотеки v8/libuv порождают потоки, чтобы обрабатывать выполнение асинхронных фрагментов программы.Обработка асинхронных вызовов Node.js и многоядерное масштабирование
Вопрос в том, являются ли эти потоки порожденными, масштабируют ли они многоядерные архитектуры? Я имею в виду, что если у меня есть процессор с 4 ядрами, а поток основного узла работает на одном из этих процессоров, будут ли эти внутренне порожденные потоки масштабироваться для остальных трех процессоров и не останутся на одном CPU. Теоретически они должны масштабироваться, но поскольку все говорят, что node.js из коробки не использует несколько ядер, я думал, что это стоит спросить.
one-thread-per-process: Я не думаю, что эта фраза понятна правильно. Существует один процесс (процесс узла) и поток (поток основного узла), но во время процесса генерируется больше потоков для обработки асинхронных вызовов. Зачем кому-то нужна библиотека потоков, такая как v8 и libuv, если все обрабатывается только одним потоком? – ralzaul
Node.js работает только с одним потоком выполнения, что на самом деле означает, что он выполняет все по одному потоку на основе циклов событий. Если вы хотите, чтобы node.js использовал несколько ядер одного процессора, переходите к кластерам. – Pragya
Кроме того, v8 обеспечивает мощную многопоточную среду, поэтому не смешивайте ее с несколькими ядрами – Pragya