Comment est Node.js intrinsèquement plus rapide quand il repose toujours sur les Threads en interne?

Je viens de regarder la vidéo suivante: Introduction à la Node.js et ne comprends toujours pas comment vous obtenez les avantages de rapidité.

Principalement, à un moment, Ryan Dahl (Node.js " créateur) dit que Node.js est l'événement de la boucle de base au lieu de basé sur le thread. Les Threads sont coûteux et ne devrait être laissée aux experts de la programmation simultanée d'être utilisé.

Plus tard, il montre ensuite l'architecture de la pile de Node.js qui a un C sous-jacente de mise en œuvre qui a son propre pool de Threads en interne. Alors, évidemment Node.js les développeurs ne serait jamais le coup d'envoi de leur propre fils ou utiliser le pool de threads directement...ils utilisent appel asynchrone-dos. Ce que je comprends.

Ce que je ne comprends pas, c'est le point que Node.js encore est l'utilisation de threads...c'est juste le masquage de la mise en œuvre alors comment est-ce plus rapide si 50 personnes demande 50 fichiers (pas actuellement dans la mémoire) alors ne sont pas 50 threads requis?

La seule différence étant que puisque c'est géré en interne, l'Node.js développeur n'a pas de code de la tige filetée de détails, mais en dessous c'est encore en utilisant les threads pour traiter les IO (blocage) les demandes de fichiers.

Si vous n'êtes pas vraiment juste de prendre un problème (threading) et en le cachant bien que ce problème existe toujours: principalement plusieurs threads, changement de contexte, dead-locks...etc?

Il doit y avoir un détail que je ne comprends toujours pas ici.

  • Je suis plutôt d'accord avec vous que la demande est quelque peu simplifiée. Je crois que le nœud de l'avantage en termes de performance se résume à deux choses: 1) l'threads sont toutes contenues à un niveau assez faible, et restent donc limitées en taille et en nombre, et la synchronisation de thread est donc simplifiée; 2) le niveau de l'OS "commutation" via select() est plus rapide que le contexte de thread swaps.
  • Veuillez voir cette stackoverflow.com/questions/24796334/...