threads nodejs node example child_process child node.js parallel-processing

node.js - nodejs - node js execute shell command



¿Cómo funciona node.js? (2)

Aunque la pregunta ya se explicó antes de mucho tiempo, estoy poniendo mis pensamientos en lo mismo.

Nodo JS es una tecnología de un solo hilo. Básicamente, la preocupación del creador de Node JS (Ryan Dahl) era que el procesamiento en paralelo utilizando múltiples subprocesos no es la forma correcta o demasiado complicada.

Si node.js no usa hilos, ¿cómo maneja las solicitudes concurrentes en paralelo?

Respuesta: Es una frase completamente incorrecta cuando dice que no usa hilos, Node Js usa hilos pero de una manera inteligente. Utiliza un solo hilo para atender todas las solicitudes HTTP y múltiples hilos en el grupo de hilos (en libuv) para manejar cualquier operación de bloqueo

Libuv: una biblioteca para manejar la E / S asíncrona.

¿Qué significa el modelo I / O de eventos?

Respuesta: El término correcto es E / S sin bloqueo . Casi nunca bloquea como dice el sitio oficial de Node JS. Cuando cualquier solicitud va al servidor de nodo, nunca pone en cola la solicitud. Toma la solicitud y comienza a ejecutarse si está bloqueando la operación, luego se envía al área de subprocesos de trabajo y se registra una devolución de llamada para la misma tan pronto como finaliza la ejecución del código, activa la misma devolución de llamada y va a la cola de eventos y es procesada por el bucle de eventos nuevamente que crean respuesta y envian al cliente respectivo.

Enlace útil: haga clic aquí

No entiendo varias cosas acerca de los nodejs. Cada fuente de información dice que node.js es más escalable que los servidores web de subprocesos estándar debido a la falta de bloqueo de subprocesos y cambio de contexto, pero me pregunto, si node.js no usa subprocesos, ¿cómo maneja las solicitudes concurrentes en paralelo? ¿Qué significa el modelo I / O de eventos?

Su ayuda es muy apreciada. Gracias


El nodo está completamente impulsado por eventos. Básicamente, el servidor consiste en un subproceso que procesa un evento tras otro.

Una nueva solicitud es un tipo de evento. El servidor comienza a procesarlo y cuando hay una operación de bloqueo de E / S, no espera hasta que se completa y en su lugar registra una función de devolución de llamada. El servidor comienza inmediatamente a procesar otro evento (tal vez otra solicitud). Cuando finaliza la operación de E / S, ese es otro tipo de evento, y el servidor lo procesará (es decir, continuará trabajando en la solicitud) ejecutando la devolución de llamada tan pronto como tenga tiempo.

Por lo tanto, el servidor nunca necesita crear subprocesos adicionales o cambiar entre subprocesos, lo que significa que tiene muy poca sobrecarga. Si desea hacer un uso completo de múltiples núcleos de hardware, simplemente inicie varias instancias de node.js

Actualización En el nivel más bajo (código C ++, no Javascript), en realidad hay varios subprocesos en node.js: hay un grupo de trabajadores de IO cuyo trabajo es recibir las interrupciones de IO y colocar los eventos correspondientes en la cola para ser procesados por el hilo principal. Esto evita que el hilo principal se interrumpa.