139 votes

Saisissant l’alternative de nœud JS de multithreading

Si je comprends bien, Node JS est non bloquant...donc au lieu d'attendre une réponse à partir d'une base de données ou d'autres processus il est passé à autre chose et vérifie plus tard.

Aussi, il est mono-thread.

Donc, est-ce à dire qu'un Nœud donné JS processus peut pleinement et efficacement utiliser un seul cœur de PROCESSEUR, mais il ne sera pas utiliser n'importe quel autre noyau de la machine, comme dans, il n'utilisez jamais plus d'un à la fois.

Bien sûr, cela signifie que les autres Processeurs peuvent encore être utilisées par d'autres procédés pour des choses comme la base de données SQL ou d'autres délibérément séparé CPU lourd de sous-routines tant qu'ils sont d'un processus distinct.

Aussi dans le cas où le Nœud JS processus a une boucle sans fin ou fonction longue durée, ce processus n'est plus utile en aucune façon jusqu'à ce que la boucle sans fin ou fonction longue durée est arrêté (ou à l'ensemble des processus de tués).

Tout cela est-il droit? Ai-je raison de ma compréhension?

86voto

jcoder Points 14982

Assez bien correct, oui. L'node.js le serveur dispose d'un filetage intérieur de la piscine de sorte qu'il peut effectuer des opérations de blocage et de notifier le thread principal avec un rappel ou d'un événement lorsque les choses se terminer.

Donc j'imagine qu'il va faire une utilisation limitée d'un autre base pour le pool de threads, par exemple si vous faites un non-blocage système de fichiers en lecture c'est probablement mis en œuvre par raconter une thead dans le pool de threads pour effectuer la lecture et de définir une fonction de rappel quand c'est fait, ce qui signifie que la lecture puisse se faire sur un autre thread/core alors que les principaux node.js le programme est en train de faire quelque chose d'autre.

Mais à partir d'un node.js point de vue, il est tout à fait unique filetée et de ne pas utiliser directement plus d'un noyau.

36voto

Michael Borgwardt Points 181658

Oui, je dirais que votre interprétation est tout à fait correcte. Cet article explique le raisonnement derrière cette conception tout à fait bien.

13voto

Nuray Altin Points 495

Puisque cette question posées il y a presque 2 ans. Les choses deviennent différents ou il y a des approches alternatives à problème multithreading sur Node.JS

Selon sous le billet de blog, utilisant l’extension de la « mission » entrants, certains peuvent bénéficier d’autres cœurs disponibles directement.

http://oguzbastemur.blogspot.com/2013/12/multithread-NodeJS.html

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X