Pregunta

Tengo dos preguntas de novato:

1) ¿Por qué node.js se ejecuta en un solo hilo? ¿Por qué no solo usa el proceso en sí? ¿O cuáles son las ventajas de ejecutarlo en un hilo en lugar de proceso?

2) ¿Qué sucede si un hilo en un proceso se bloquea (soy consciente de que, la excepción no manejada hará que el proceso salga), pero ¿qué sucede si se atrapa correctamente? o con excepciones como excepciones de punto flotante. ¿El proceso también se bloqueará?

¿Fue útil?

Solución

Creo que estás un poco confundido acerca de lo que significa "un solo enhebrado" en este caso. Node.js utiliza múltiples hilos en el fondo para manejar las llamadas de bloqueo de manera asincrónica.

Node.js Core, el motor JavaScript, está en rosca. La falta de hilos múltiples y la disponibilidad de un bucle de eventos facilitan mucho la programación. En resumen, no tiene que lidiar con todos los problemas de concurrencia que trae múltiples hilos con él, su código es mucho más determinista de esta manera.

En caso de que un hilo se bloquee, es completamente irrelevante si este fue el único o uno de muchos, si el código se bloquea lo mejor que puede esperar es que el programa muera con él, nada sería más problemático que que el programa continúe ejecutando con estado parcialmente corrupto. Imagine el hilo que los bloqueos fueron responsables de guardar datos en el disco, y ahora su programa continúa funcionando sin ahorrar nuevamente.

Otros consejos

  1. Node.js está diseñado para ser extremadamente liviano, y solo se llama cuando es necesario. Entonces, cada hilo maneja una solicitud y luego sale. Si llama /myPage, Node.js procesará la solicitud y luego terminará. Esto da como resultado un mejor rendimiento mientras mantiene una huella pequeña.
  2. Si hay una excepción y se maneja correctamente, entonces arrojará un error de acuerdo con cómo lo definió. JavaScript es todo o nada de idioma. Cualquier error hará que JavaScript arroje un error y un bloqueo, por eso debe asegurarse de manejar todos los errores posibles.

Ejecutar un programa en un proceso o en un solo rostro es lo mismo. Cada proceso tiene un hilo principal. Dependiendo del lenguaje y la plataforma de programación, se pueden usar hilos adicionales para ejecutar partes de su programa simultáneamente. Node.js no tiene la posibilidad de iniciar hilos adicionales.

De esta manera, no tiene la posibilidad de ejecutar piezas de su programa en paralelo además de comenzar nuevos procesos. Múltiples hilos en un solo proceso comparten la misma memoria, mientras que los procesos no. Cuando necesita compartir información entre procesos, debe usar el paso de mensajes.

La desventaja del paso del mensaje es que es más lento que compartir información a través de la memoria. La ventaja es que no tiene que razonar sobre el estado mutable de los objetos en su memoria y cómo garantizar que esos objetos no se vuelvan inconsistentes.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top