Eu não sou um programador de Nó, mas estou interessado em como o modelo de E / S sem bloqueio de thread único funciona. Depois de ler o artigo entendendo-o-nó-js-evento-loop , estou realmente confuso sobre isso. Deu um exemplo para o modelo:
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();
}
);
Que: Quando há duas solicitações A (vem primeiro) e B, uma vez que existe apenas um encadeamento, o programa do lado do servidor manipula a solicitação A primeiro: fazer consultas SQL é uma instrução adormecida que espera por E / S. E o programa está bloqueado na I/Oespera e não pode executar o código que renderiza a página da web. O programa mudará para solicitar B durante a espera? Na minha opinião, por causa do modelo de thread único, não há como alternar uma solicitação de outra. Mas o título do código de exemplo diz que tudo é executado em paralelo, exceto o seu código .
(PS: Não sei se entendi errado o código ou não, pois nunca usei o Nó.) Como o Nó alterna A para B durante a espera? E você pode explicar o modelo de E / S não bloqueante de um único modo de maneira simples? Eu apreciaria se você pudesse me ajudar. :)
