una termine sincrono sincronas sincrona que programacion node funciones funcion esperar asincrono asincronia asincronas asincrona node.js asynchronous

node.js - termine - ¿Cómo funciona la programación asincrónica en un único modelo de programación con subprocesos?



programacion asincrona javascript (2)

Dilo conmigo ahora: la programación asincrónica no significa necesariamente multihilo.

Javascript es un tiempo de ejecución de subproceso único: simplemente no puede crear nuevos subprocesos en JS porque el idioma / tiempo de ejecución no lo admite.

Frank lo dice correctamente (aunque obtusamente) En inglés: hay un bucle de evento principal que se maneja cuando las cosas entran en tu aplicación. Por lo tanto, "gestionar esta solicitud HTTP" se agregará a la cola de eventos, y luego será manejado por el bucle de eventos cuando corresponda.

Cuando llamas a una operación asincrónica (una consulta mysql db, por ejemplo), node.js envía "hey, ejecuta esta consulta" a mysql. Dado que esta consulta llevará algún tiempo (milisegundos), node.js realiza la consulta utilizando la biblioteca asíncrona de MySQL, volviendo al bucle de evento y haciendo algo más allí mientras espera que mysql nos lo devuelva. Como manejar esa solicitud HTTP.

Editar : Por el contrario, node.js simplemente podría esperar (sin hacer nada) para que mysql pueda volver a él. Esto se llama una llamada síncrona. Imagine un restaurante, donde su camarero envía su pedido al cocinero, luego se sienta y mueve los pulgares mientras el chef cocina. En un restaurante, como en un programa node.js, tal comportamiento es insensato: tiene otros clientes que tienen hambre y necesitan que se les atienda. Por lo tanto, debe ser lo más asíncrono posible para asegurarse de que un camarero (o proceso node.js) esté sirviendo a tantas personas como les sea posible.

Editar hecho

Node.js se comunica con mysql utilizando librerías C, por lo que técnicamente esas bibliotecas C podrían generar subprocesos, pero dentro de Javascript no se puede hacer nada con los subprocesos.

Estaba revisando los detalles de node.js y llegué a saber que, es compatible con la programación asíncrona aunque, esencialmente, proporciona un único modelo de subprocesos.

¿Cómo se maneja la programación asincrónica en tales casos? ¿Es como el tiempo de ejecución en sí mismo crea y gestiona los hilos, pero el programador no puede crear hilos explícitamente? Sería genial si alguien pudiera señalarme algunos recursos para aprender sobre esto.


Ryan dijo que era lo mejor: sync / async es ortogonal a single / multi-threaded. Para casos de subprocesamiento único y multiproceso hay un ciclo de evento principal que llama devoluciones de llamada registradas utilizando el Patrón de Reactor . Para el caso de un solo subproceso, las devoluciones de llamada se invocan secuencialmente en el hilo principal. Para el caso de subprocesos múltiples, se invocan en subprocesos separados (normalmente utilizando un grupo de subprocesos). Realmente es una cuestión de cuánta contención habrá: si todas las solicitudes requieren acceso sincronizado a una única estructura de datos (por ejemplo, una lista de suscriptores), entonces los beneficios de tener múltiples hilos pueden verse disminuidos. Depende del problema

En cuanto a la implementación, si un marco tiene un solo hilo, entonces es probable que use una llamada de sistema de poll/select , es decir, el sistema operativo está activando el evento asíncrono.