¿Como funciona?

Nodejs utiliza el motor V8 que Google usa en su navegador, este motor interpreta el código y lo ejecuta. Este intérprete creado por Google y escrito en C++ es ultra-rápido y puede ser descargado e incorporado en cualquier aplicación que se desee.

Nodejs es una aplicación de un único hilo de ejecución, por lo que te preguntarás cómo es posible que no sea bloqueante como al principio dijimos, descargando operaciones al kernel del sistema.

Dado que la mayoría de los kernels modernos son de múltiples hilos, pueden manejar múltiples operaciones ejecutándose en segundo plano.

De manejar todo esto se encarga el Event loop que es un único subproceso que realiza todas las operaciones de entrada y salida (I/O) de forma asíncrona.

El Event loop es una cola de funciones. Cuando se ejecuta una función asíncrona, la función devuelve el código interno de la función, lo envuelve y se inserta en una cola.

El motor de JavaScript manda las operaciones a la cola y hace que se procesen en segundo plano para no bloquear las demás operaciones.

¿Cómo lo hace?

Node.js usa una librería llamada libuv, la cual proporciona una manera de añadir las operaciones necesarias a la cola de forma asíncrona (conocida como threadpool) y estas operaciones corren de forma nativa en el SO.

El proceso es el siguiente:

Tengo una cola de tareas definida. En Node el tamaño máximo de la lista de tareas es de 128, según como Node lo indica en su código fuente:

#define MAX_THREADPOOL_SIZE 128

Se define el número de hilos, por defecto son 4, según como Node lo indica en su código fuente:

static uv_thread_t default_threads[4];

Cada hilo toma una tarea y la ejecuta. Una vez que la tarea esté completa, se disparará otra.

Si no hay tareas, el subproceso permanecerá inactivo hasta que una nueva tarea entre en la cola.

results matching ""

    No results matching ""