Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

320
Vistas
¿Alguien puede explicarme cómo el subproceso único de Nodejs es asíncrono?

he leido eso

Node.js es Single Threaded, es decir, ejecuta el código en una sola secuencia o dirección. En un momento dado, solo se ejecuta una única tarea/llamada. Asíncrono y de subproceso único: la ejecución no espera a que se complete la solicitud actual y pasa a la siguiente solicitud/llamada.

Estoy confundido entre los dos Single-Threaded y Asynchronous. Entonces, ¿cómo se maneja el proceso como si realizo alguna secuencia de operaciones cuando una tarea está establecida en el tiempo de espera, otra está obteniendo datos de la API, otra es algunas operaciones aritméticas? Entonces, ¿cuál sería la secuencia de operaciones considerando su único subproceso?

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

"Hilo único" en este caso significa que ejecuta SU Javascript en un solo hilo. Eso significa que ejecuta una parte de su Javascript hasta que devuelve el control al sistema y solo entonces puede ejecutar el código adjunto a algún otro evento. Nunca se ejecutan dos piezas de su Javascript al mismo tiempo.

FYI, estamos ignorando WorkerThreads aquí para los propósitos de esta discusión, que son una forma útil de ejecutar múltiples subprocesos de Javascript, pero no están involucrados en la arquitectura asíncrona general.

Las operaciones asíncronas se implementan TODAS en código nativo (generalmente código C/C++) por nodejs. Son cosas como temporizadores, operaciones de red, operaciones de disco, etc. Ese código nativo (principalmente en una biblioteca multiplataforma llamada libuv ) tiene interfaces en Javascript que le permiten llamarlos como http.request() o fs.read() , pero la implementación central subyacente de esas funciones está en código nativo. El código nativo para esas operaciones puede o no usar subprocesos del sistema operativo en su implementación. Pero esos hilos están completamente ocultos del código Javascript.

Por ejemplo, las operaciones de red en nodejs no usan subprocesos. Utilizan API asincrónicas de forma nativa en el sistema operativo que les permiten recibir una notificación cuando se completa una operación de red sin bloquear o girar y esperar. Otras operaciones asincrónicas, como las operaciones de archivos, en realidad utilizan un conjunto de subprocesos nativos del sistema operativo para "simular" una arquitectura asincrónica.

Entonces, mientras su Javascript se ejecuta como un solo subproceso, varias operaciones asincrónicas pueden estar en proceso a la vez. Si miras este código:

 const fsp = require('fs').promises; Promise.all([fsp.readFile("filea.txt"), fsp.readFile("fileb.txt")]).then(results => { console.log(results[0]); console.log(results[1]); }).catch(err => { console.log(err); });

Esto leerá dos archivos en paralelo y le indicará cuándo estarán disponibles los datos de ambos archivos. Si bien su Javascript aún se ejecuta como un solo subproceso, las operaciones de archivo subyacentes utilizan subprocesos a nivel del sistema operativo y las operaciones de disco se ejecutan en subprocesos separados. Por lo tanto, solo su Javascript real tiene un solo subproceso, no necesariamente las operaciones asincrónicas subyacentes.

Afortunadamente, generalmente puede evitar por completo los dolores de cabeza de la concurrencia de la programación de subprocesos múltiples porque dos piezas de su propio Javascript nunca se ejecutan al mismo tiempo. Por lo tanto, no necesita mutexes u otros dispositivos de concurrencia solo para escribir variables de forma segura. Los detalles del uso de subprocesos se abstraen detrás de las interfaces asíncronas. Y, la naturaleza impulsada por eventos de cómo nodejs maneja la finalización de estas interfaces asíncronas dicta que una pieza de Javascript se ejecutará para completarse antes de que se pueda procesar el siguiente evento de finalización que tiene el siguiente resultado asíncrono.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda