Question

J'ai deux questions noob:

1) Pourquoi Node.js est en cours d'exécution dans un seul fil? pourquoi ne pas il utilise juste le processus lui-même?    OU Quels sont les avantages de celui-ci en cours d'exécution dans un thread au lieu de processus?

2) Qu'est-ce qui se passe si un thread dans un processus écrasé (je suis conscient du fait que, exception non traitée entraînera processus pour quitter), mais ce qui se passe si bien son catch'd? ou avec des exceptions comme exceptions à virgule flottante. sera le processus se bloque aussi?

Était-ce utile?

La solution

Je pense que vous êtes un peu confus au sujet de ce que « seul thread » signifie dans ce cas. Node.js lui-même utilise plusieurs threads en arrière-plan pour manipuler autrement bloquer les appels de manière asynchrone.

noyau Node.js, le moteur JavaScript, est unique filetée. L'absence de multi threading et la disponibilité d'une boucle d'événements rend la programmation beaucoup plus facile. En bref, vous ne devez pas traiter tous les problèmes de concurrence que multithreading apporte avec lui votre code est beaucoup plus déterministe de cette façon.

Dans le cas où un fil se bloque, il est tout à fait hors de propos si cela était le seul ou l'un des nombreux, si le code plante la meilleure chose que vous pouvez espérer est que le programme meurt avec elle, rien ne serait plus gênant que vous ayez programme continu afin de fonctionner à l'état partiellement corrompue. Imaginez le fil qui se bloque était responsable de l'enregistrement des données sur le disque, et maintenant vous programme continue de fonctionner sans jamais sauver à nouveau.

Autres conseils

  1. Node.js est conçu pour être extrêmement léger, et est seulement appelé en cas de besoin. Ainsi, chaque fil gère une demande quitte. Si vous appelez / mypage, Node.js traitera la demande et prendra fin. Il en résulte de meilleures performances tout en conservant un faible encombrement
  2. S'il y a une exception, et il est manipulé correctement, il lancera une erreur selon la façon dont vous l'avez défini. Javascript est tout ou rien langage. Toute erreur provoquera le javascript pour lancer une erreur et accident, c'est pourquoi vous devez vous assurer que vous gérez toutes les erreurs possibles.

L'exécution d'un programme dans un processus ou un seul thread est la même chose. Chaque processus a un fil conducteur. Selon le langage de programmation et la plate-forme, des fils supplémentaires peuvent être utilisés pour exécuter des parties de votre programme en même temps. Node.js n'a pas la possibilité de lancer des threads supplémentaires.

De cette façon, vous n'avez pas la possibilité d'exécuter des morceaux de votre programme en parallèle en plus à partir de nouveaux processus. threads multiples dans un seul processus partagent la même mémoire, alors que les processus ne le font pas. Lorsque vous avez besoin de partager des informations entre les processus, vous devez utiliser le passage de messages.

L'inconvénient de passage de messages est qu'il est plus lent que le partage d'informations à travers la mémoire. L'avantage est que vous n'avez pas à raisonner sur l'état mutable des objets dans votre mémoire et comment faire en sorte que ces objets ne sont pas devenus incompatibles.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top