‫Instructeur : Alors, rappelez-vous que dans la
‫dernière conférence, nous avons parlé de l'architecture des
‫nœuds, où deux parties
‫fondamentales sont le pool de threads et la boucle d'événements.
‫Donc, dans cette conférence, vous allez tout
‫apprendre sur les threads et un pool de threads.
‫Et dans le
‫prochain, nous plongerons ensuite profondément dans la boucle des événements.
‫Alors, commençons.
‫Donc, tout d'abord, lorsque nous utilisons Node sur un
‫ordinateur, cela signifie qu'un processus Node
‫s'exécute sur cet ordinateur.
‫Et le processus n'est qu'un programme en cours d'exécution.
‫Et nous avons déjà appris que Node. js est
‫essentiellement un programme C++, qui démarrera
‫donc un processus lorsqu'il sera en cours d'exécution.
‫Ceci est important car dans Node,
‫nous avons en fait accès à une variable de processus,
‫que nous utiliserons plus tard dans ce cours.
‫Maintenant, dans ce processus, Node. js s'exécute
‫dans un soi-disant thread unique.
‫Et un fil n'est fondamentalement qu'une séquence d'instructions.
‫Mais il n'est pas important de comprendre
‫en profondeur ce qu'est un fil ou un processus.
‫C'est plus une question d'informatique.
‫Imaginez simplement un fil comme étant une
‫boîte où notre code est exécuté dans le processeur d'un ordinateur.
‫Maintenant, ce qu'il est important de
‫comprendre ici, c'est le fait que Node s'exécute dans un seul
‫thread, ce qui facilite le blocage des applications Node.
‫Et c'est quelque chose dont nous avons déjà parlé, en fait.
‫Mais c'est quelque chose de vraiment, vraiment important à retenir
‫car c'est l'une des fonctionnalités
‫uniques que Node. js apporte à la table.
‫Donc, encore une fois, si vous exécutez votre application Node,
‫elle s'exécutera dans un seul thread.
‫Peu importe si vous avez 10 utilisateurs ou
‫10 millions d'utilisateurs accédant à votre application en même temps.
‫Et donc vous devez faire très
‫attention à ne pas bloquer ce fil.
‫Et nous allons bien sûr
‫nous en occuper tout au long du projet dans ce cours.
‫Poursuivons, comprenons maintenant rapidement ce
‫qui se passe exactement dans un seul thread
‫lorsque vous démarrez votre application Node.
‫Ainsi, lorsque le programme est initialisé, tout le code
‫de niveau supérieur est exécuté, ce qui signifie tout
‫le code qui ne se
‫trouve dans aucune fonction de rappel.
‫De plus, tous les modules dont votre application a besoin sont requis et
‫tous les rappels sont enregistrés, tout comme
‫ceux que nous avons
‫utilisés pour notre serveur HTP dans l'application Node Farm.
‫Vous vous en souvenez ?
‫Ensuite, après tout cela, la boucle d'événements commence enfin à s'exécuter.
‫Et encore, plus sur l'événement en boucle dans la prochaine vidéo.
‫Ce que vous devez savoir pour le moment, c'est que la
‫boucle d'événements est l'endroit où la plupart du travail est effectué dans votre application.
‫C'est donc vraiment le cœur de l'ensemble de l'architecture Node.
‫Mais voici le hic, certaines tâches sont en fait trop lourdes.
‫Ils sont trop coûteux pour être exécutés dans la boucle d'événement
‫car ils bloqueraient alors le thread unique.
‫Et donc, c'est là qu'intervient le pool de threads, qui,
‫tout comme la boucle d'événements,
‫est fourni à Node. js par la bibliothèque
‫libuv dont nous avons parlé auparavant.
‫Ainsi, le pool de threads nous donne quatre
‫threads supplémentaires qui sont complètement séparés du thread unique principal.
‫Et nous pouvons en fait le configurer jusqu'à 128 threads.
‫Mais généralement, ces quatre sont suffisants.
‫Ainsi, ces threads formaient ensemble un pool de threads.
‫Et la boucle d'événements peut alors
‫décharger automatiquement les tâches lourdes vers le pool de threads.
‫Et tout cela se passe automatiquement dans les coulisses.
‫Ce ne sont pas nous, les développeurs, qui décidons de ce
‫qui va dans le pool de threads et de ce qui ne l'est pas.
‫Désormais, les tâches coûteuses qui sont déchargées sont
‫toutes les opérations relatives aux fichiers, tout ce qui concerne
‫la cryptographie, comme la mise en cache des mots de
‫passe, puis tous les éléments de compression, ainsi que les recherches
‫DNS, qui font correspondre
‫les domaines Web à leurs adresses IP réelles correspondantes.
‫C'est donc ce qui
‫bloquerait le plus facilement le fil principal.
‫Et donc, Node s'occupe de les décharger
‫automatiquement dans le pool de threads,
‫où ils ne bloquent pas notre boucle d'événement.
‫Et c'est la chose la plus importante
‫que je veux que vous reteniez de cette vidéo.
‫Alors, passons maintenant et parlons de la boucle d'événements elle-même.