tutorial principiantes para node libro examples español desde descubriendo cero node.js internals

node.js - principiantes - node js tutorial pdf



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

Tal vez alguien que implementó el módulo node.js puede explicar el protocolo entre la cola node.js procesada en un solo hilo y las operaciones de bloqueo de IO que realizará un módulo.

Sospecho que va algo como esto:

  1. El hilo node.js registra una devolución de llamada en forma de cierre y la guarda con algún ID de correlación.
  2. node.js invoca un método (que debería realizar el bloqueo de E / S) en un módulo y le pasa los parámetros de método y el ID de correlación.
  3. El método del módulo separa un hilo y bloquea la operación de IO.
  4. cuando finaliza la operación de IO, el subproceso de los módulos vuelve a llamar al subproceso node.js y le pasa los resultados y el ID de correlación.
  5. El hilo node.js encuentra el cierre de devolución de llamada almacenada por el ID de correlación y lo invoca con el resultado devuelto desde el módulo.

Pregunta 1: ¿Es correcta la secuencia anterior?

Pregunta 2: ¿Qué es exactamente la cola node.js? ¿Es la parte donde se usa epoll, kqueue o el puerto de finalización IO en Windows? ¿Es un mecanismo de devolución de llamada para que el módulo notifique el subproceso de node.js que ha finalizado algún IO? ¿Como funciona?


Node.js realmente no maneja nada de esto como especulaste. En su lugar, se basa en los sistemas operativos para realizar la mayor parte del IO asíncrono. Utiliza select / epoll / kqueue dependiendo del sistema operativo. "Ellos" simplemente pusieron una llamada y el sistema operativo volvió a llamar con una secuencia, fragmentos, etc. En cuanto a la parte del evento, esto está integrado en V8, hace todo el trabajo vinculando las devoluciones de llamadas a eventos específicos igual Lo hace en el navegador. Finalmente, puede consultar libuv, que fue escrito junto con node y ahora es mantenido por Joyent. Es de código abierto en Github para que pueda navegar a través del código si realmente quiere los detalles = D


Sospecho altamente que Node.JS toma la misma ruta que Twisted y usa solo IO y greenlets no bloqueantes. Los hilos del sistema operativo parecen bastante ineficientes para este tipo de cosas.