Solución:
Consulte los documentos a continuación:
https://nodejs.org/en/docs/meta/topics/dependencies/#libuv
Otra dependencia importante es libuv, una biblioteca de C que se utiliza para abstraer operaciones de E / S sin bloqueo en una interfaz coherente en todas las plataformas compatibles. Proporciona mecanismos para manejar el sistema de archivos, DNS, red, procesos secundarios, canalizaciones, manejo de señales, sondeo y transmisión. También incluye un grupo de subprocesos para descargar el trabajo de algunas cosas que no se pueden hacer de forma asincrónica en el nivel del sistema operativo.
Entonces, para resumir, V8 proporciona las funcionalidades relacionadas con la ejecución de archivos JS, pero para usar recursos del sistema como Red, Archivos, etc., se usa libuv. También proporciona un modelo de subprocesamiento para acceder a los recursos mencionados.
El módulo libuv tiene una responsabilidad que es relevante para algunas funciones particulares en la biblioteca estándar. para ALGUNAS llamadas a funciones de biblioteca estándar, el lado del nodo C ++ y libuv deciden hacer cálculos costosos fuera del ciclo de eventos por completo. grupo de hilos ese grupo de subprocesos es una serie de cuatro subprocesos que se pueden utilizar para ejecutar tareas computacionalmente intensivas, como funciones hash.
De forma predeterminada, libuv crea cuatro subprocesos en este grupo de subprocesos. Eso significa que, además de ese hilo utilizado para el bucle de eventos, hay otros cuatro hilos que se pueden usar para descargar cálculos costosos que deben ocurrir dentro de nuestra aplicación. Muchas de las funciones incluidas en la biblioteca estándar de nodos harán uso automáticamente de este grupo de subprocesos.
Ahora bien, la presencia de este grupo de subprocesos es muy significativa. Bueno, claramente Node.js no es realmente de un solo subproceso
Libuv también brinda acceso de nodo al sistema de archivos subyacente del sistema operativo, como las redes. Así que así como la biblioteca estándar de nodos tiene algunas funciones que hacen uso del grupo de subprocesos libuv, también tiene algunas funciones que hacen uso del código integrado en el sistema operativo subyacente a través de libuv.
Solicitud Http simple
const https=require(“https”)
const start=Date.now()
https.request(“https://www.google.com”,res=>{
res.on(“data”,()=>{} )
res.on(“end”,()=>{console.log(Date.now()-start) }) }).end()
Entonces, en este caso, libuv ve que estamos intentando realizar una solicitud HTTP. Ni libuv ni node tienen ningún código para manejar todas estas operaciones de bajo nivel que están involucradas con una solicitud de red. En su lugar, libuv delega la solicitud que realiza al sistema operativo subyacente. Entonces, en realidad, es nuestro sistema operativo el que realiza la solicitud HTTP real. Libuv se usa para emitir la solicitud y luego simplemente espera a que el sistema operativo emita una señal de que alguna respuesta ha regresado a la solicitud. Entonces, debido a que Libuv está delegando el trabajo realizado al sistema operativo, el propio sistema operativo decide si crear una nueva amenaza o no. O simplemente, en general, cómo manejar todo el proceso de realización de la solicitud.