¿Cuántos subprocesos crea realmente Node.js? – Part 1

Node.js es un entorno de tiempo de ejecución de JavaScript multiplataformaque ayuda a ejecutar e implementar programas del lado del servidor. Node admite el procesamiento asincrónico de código, lo que nos lleva al resultado de que es una plataforma de un solo subproceso. Analicemos en detalle qué significa que el Node tiene un solo subproceso y por qué sigue este método.

Descargue e instale Node.js: Descargar Node.js

Desarrollo anterior de Node: cuando inicialmente se estaba desarrollando Node, seguía el paradigma de un subproceso por solicitud. Esto significa que cada vez que un usuario realizó una solicitud al servidor, o se realizaron requests desde la base de datos… se creó un hilo separado para completar esa solicitud. El problema con este método era que cuando las requests dedicaban su tiempo a las operaciones de E/S, se desperdiciaban los recursos vinculados a estos subprocesos. Esto también resultó en mayores períodos de tiempo de ejecución ya que se trataba de un procesamiento síncrono.

Uso de subproceso único y concepto de bucle de eventos: para superar este problema, Node adoptó un sistema de subproceso único con bucle de eventos y operaciones de E/S asíncronas. El uso de un solo subproceso permite a Node ejecutar un proceso a la vez, mientras que los procesos que toman más tiempo de lo habitual son manejados por la API de Node y el bucle de eventos. El bucle de eventos utiliza devoluciones de llamada para devolver salidas de funciones que estaban siendo manejadas por Node API y las tareas continúan ejecutándose normalmente hasta que se procesa todo el código.

Trabajo de subproceso único de Node

Este método se considera altamente eficiente, pero también tiene un inconveniente. Cuando tenemos muchas tareas que requieren un uso intensivo de la CPU y que requieren un procesamiento síncrono, este método no funcionará, ya que llevará mucho tiempo y bloqueará el código. Dado que JavaScript y Node no se crearon para tareas de CPU, este es un caso excepcional y se manejará de manera diferente mediante el uso de subprocesos de trabajo .

Ejemplo: Consideremos un ejemplo para comprender cómo funciona el ciclo de eventos.

Javascript

// Simple JavaScript Code to show Event
// loop demonstration for Node
console.log("Geeks");
setTimeout(function cb(){
    console.log("Geeks");
}, 3000);
console.log("For");

Cuando ejecutamos el código dado, la salida será como se indica a continuación.

Producción:

Geeks
For
Geeks

El motivo de este resultado es la ejecución de la función setTimeout() que maneja la API de Node. Por lo tanto, el tiempo de espera continuará ejecutándose por separado y la pila de llamadas continuará ejecutando otras declaraciones de forma asíncrona. Para obtener más información sobre cómo Node evita el código de bloqueo, consulte este artículo .

Entonces, para resumir, Node y JavaScript están desarrollados para ser de un solo subproceso, lo que los ayuda a ser eficientes en el tiempo y ahorrar memoria.

Referencias: https://www.geeksforgeeks.org/why-node-js-is-a-single-threaded-language/

Publicación traducida automáticamente

Artículo escrito por greenblade29 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *