Je ne suis pas un Node
programmeur, mais je suis intéressé par la façon dont le single threaded non bloquant IO modèle fonctionne. Cependant, après la lecture de cet article de comprendre-les-node-js-événement en boucle, je suis vraiment confus à ce sujet.
Il a donné un exemple pour le modèle:
c.query(
'SELECT SLEEP(20);',
function (err, results, fields) {
if (err) {
throw err;
}
res.writeHead(200, {'Content-Type': 'text/html'});
res.end('<html><head><title>Hello</title></head><body><h1>Return from async DB query</h1></body></html>');
c.end();
}
);
Voici ma question:
Lorsqu'il y a deux demandes d'Une(première) et B), puisqu'il n'existe qu'un seul thread, le côté serveur programme permettra de répondre à la demande d'Une première. Faire SQL d'interrogation, qui est essentiellement une instruction de mise en veille permanent pour les e/S en attente. Le programme est "coincé" dans l'attente d'e/S, et ne peut pas exécuter le code qui affiche la page web.
Le programme de l'interrupteur de demande de B pendant l'attente?
À mon avis, parce que c'est un seul modèle de thread, il n'y a aucun moyen de passer de l'un demande à l'autre. Mais le titre de l'exemple de code dit que "tout se déroule en parallèle à l'exception de votre code".
(P. S je ne suis pas sûr si j'ai mal compris le code ou pas puisque je n'ai jamais utilisé Node
.)
Comment passer d'Un Nœud à B pendant l'attente? Et pouvez-vous expliquer la mono-thread non bloquant IO modèle d' Node
d'une manière simple?
Je vous serais reconnaissant si vous pouviez m'aider. :)