J'ai lu cela et cela, regardé cela...
J'ai fait un diagramme de comment je le comprends :
- Les rappels Javascript (fonctions) peuvent être présents dans la
file en cours
, lafile de vérification
, lafile de rappels de fermeture
, lafile de minuteries
et lafile de rappels d'E/S
. - Le code Js s'exécute uniquement à partir de la
file en cours
une fonction (tâche/job) à la fois. - Le code Js exécuté à ce moment-là peut ajouter des microtâches (tâches) à la
file en cours
pour être exécutées après lui-même et des macrotâches (tâches) à lafile de vérification
. Il peut ajouter des tâches à d'autres files seulement indirectement en demandant à l'API de le faire. - La phase
Idle, prepare
est utilisée pour certaines opérations internes de node js (peut-être comme la collecte de déchets). - La phase
Poll
interroge les threads du pool de threads et remplit les files avec les rappels appropriés. - Les phases
Idle, prepare
etpoll
n'ont pas de files pour les rappels js associés à eux. - (quatre) Les threads dans le
pool de threads
sont tous identiques et n'ont pas de spécialisation. - La boucle d'événements prend et exécute les tâches une par une de chaque file jusqu'à ce qu'elle soit vide, puis passe à la file suivante.
- Les tâches dans les files n'ont pas de tâches (microservices) associées. Les tâches sont créées uniquement pendant l'exécution d'une tâche ou d'une autre tâche et sont présentes uniquement dans la
file de tâches en cours
.
Est-ce que cette compréhension est correcte ou est-ce que j'ai oublié quelque chose ?
Le fichier MS Power Point .pptx avec le diagramme peut être trouvé ici.
0 votes
Ce texte me semble trop compliqué. Peut-être l'est-il, mais un modèle plus simple n'est-il pas suffisant lorsque vous écrivez du code? Je pense qu'il n'est pas nécessaire de connaître tous les détails de ce qui se passe sous le capot. N'est-il pas suffisant de savoir qu'il y a une file d'attente pour l'instant présent, une file d'attente pour le prochain instant et des rappels en attente du minuteur ou de l'E/S.
8 votes
Je ne peux pas répondre à cela, mais j'apprécie vraiment les efforts que vous avez mis dans votre question.
0 votes
@LorenzMeyer Un modèle plus simple suffit pour écrire du code, mais j'aimerais quand même savoir ce qu'il y a sous le capot. georg, merci :)
3 votes
Je pense que la partie documentation est l'endroit idéal où vous pouvez poster ceci. En réalité, vous n'avez pas de question précise à laquelle quelqu'un pourrait répondre, vous cherchez simplement une critique de votre modèle.
0 votes
@MarioSantini Voulez-vous dire qu'il y a stackoverflow.com/documentation/node.js/topics? Peut-être que je vais y jeter un coup d'œil de plus près demain. Dois-je éditer le sujet Eventloop existant ou en créer un nouveau?
0 votes
@grabantot oui. Pas sûr comment déplacer votre publication, je ne l'ai jamais fait. Vous pourriez simplement essayer, ou demander de l'aide sur Meta ou sur le chat.
0 votes
Le site de documentation de Stackoverflow.com est en train de mourir. Ils ont décidé de l'arrêter.