2012-08-23 3 views
5

Ok, estoy aprendiendo Node.js pero no podía entender esto. Lo estoy aprendiendo leyendo The Node Beginner Book. En él hay una sección sobre operaciones de bloqueo y no bloqueo. Lo que no entiendo es las operaciones sin bloqueo.Confundirme mucho con el modelo de ejecución de un solo hilo de Node.js

Aquí está el código:

var exec = require("child_process").exec; 

function start(response) { 
    console.log("Request handler 'start' was called."); 

    exec("ls -lah", function (error, stdout, stderr) { 
    response.writeHead(200, {"Content-Type": "text/plain"}); 
    response.write(stdout); 
    response.end(); 
    }); 
} 

function upload(response) { 
    console.log("Request handler 'upload' was called."); 
    response.writeHead(200, {"Content-Type": "text/plain"}); 
    response.write("Hello Upload"); 
    response.end(); 
} 

exports.start = start; 
exports.upload = upload; 

La función de inicio de llamada exec, y exec ejecuta ls -lah. Entonces la devolución de llamada esperará una respuesta ¿verdad? Qué pasa si el ejecutivo ejecuta "find /", en mi computadora tomaría aproximadamente 30 segundos terminar el comando "find /". Como se trata de un hilo único, si el usuario 1 accede a la función de inicio, dentro de milisegundos el usuario 2 también accede también a la función de inicio. Entonces, ¿qué pasa? ¿Significa que el Usuario 1 recibirá la respuesta en 30 segundos mientras que el Usuario 2 tendrá que esperar 1 minuto porque el Usuario 1 todavía está cumpliendo el "buscar /"?

Lo siento si mi pregunta es demasiado noobish. ¡Gracias por leer!

Respuesta

4

En node.js, todas las operaciones de E/S funcionan de forma asíncrona. Ambas operaciones find se ejecutarán en paralelo. Intente leer esto: Understanding the node.js event loop.

+0

Veo, gracias por ese enlace. ¡muy útil para mí! –

Cuestiones relacionadas