Я просто смотрел следующее видео: Введение в Node.js и до сих пор не понимаю, как вы получаете преимущества скорости.
В основном, в какой-то момент Райан Дал (создатель Node.js ') говорит, что Node.js основан на событиях, а не на потоковом. Потоки дороги, и их следует оставлять только специалистам по параллельному программированию.
Затем он показывает стек архитектуры Node.js, который имеет базовую реализацию C, у которой есть собственный пул потоков внутри. Таким образом, разработчики Node.js никогда не будут запускать собственные потоки или напрямую использовать пул потоков... они используют асинхронные обратные вызовы. Насколько я понимаю.
То, что я не понимаю, - это то, что Node.js все еще использует потоки... он просто скрывает реализацию, так как это происходит быстрее, если 50 человек запросят 50 файлов (не в настоящее время в памяти), а затем aren Требуется ли 50 потоков?
Единственное отличие состоит в том, что, поскольку он управлялся внутренне, разработчик Node.js не должен кодировать детали с резьбой, но под ним все еще используется потоки для обработки запросов на ввод-вывод IO (blocking).
Итак, вы действительно не просто принимаете одну проблему (потоки) и скрываете ее, пока эта проблема все еще существует: в основном несколько потоков, переключение контекста, блокировка блокировок... и т.д.?
Должна быть какая-то деталь, которую я до сих пор не понимаю.