No soy un programador de Nodo, pero estoy interesado en cómo funciona el modelo de E / S de un solo hilo sin bloqueo . Después de leer el artículo de comprensión-el-nodo-js-event-loop , estoy realmente confundido al respecto. Dio un ejemplo para el 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: Cuando hay dos solicitudes A (viene primero) y B ya que solo hay un solo hilo, el programa del lado del servidor manejará la solicitud A en primer lugar: hacer consultas SQL es una declaración inactiva que representa la espera de E / S. Y el programa está atascado en la I/O
espera, y no puede ejecutar el código que representa la página web detrás. ¿El programa cambiará a la solicitud B durante la espera? En mi opinión, debido al modelo de subproceso único, no hay forma de cambiar una solicitud de otra. Pero el título del código de ejemplo dice que todo se ejecuta en paralelo, excepto su código .
(PD: No estoy seguro si malinterpreto el código o no, ya que nunca he usado Node). ¿Cómo cambia Node A a B durante la espera? ¿Y puede explicar el modelo de Nodo de bloqueo único IO de Node de una manera simple? Le agradecería si pudiera ayudarme. :)