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

187
Vistas
La implementación del bucle de eventos con Libuv o Libevent en v8, ¿por qué es necesario?

Una aplicación web de Javascript tiene un ciclo de eventos para manejar la pila de llamadas y se repite para verificar si hay colas de tareas devueltas por la API web del navegador para ejecutarse cuando la pila de llamadas está libre. Usaré v8 como ejemplo para el motor de javascript.

Siempre me he imaginado esta pila de llamadas como parte del motor V8, en última instancia, ejecuta nuestro Javascript como un programa síncrono. Cualquier delegación de acción de subprocesos múltiples a una API como libuv/libevent debe regresar a la pila de llamadas de ejecución de V8 mediante un procesamiento asíncrono.

Pero recientemente, leí chromium y node.js usa el bucle de eventos proporcionado por libevent/libuv sobre la implementación de v8. Esta parte realmente interfiere un poco con mi modelo mental. El bucle de eventos es la solución perfecta para obtener un procesamiento asíncrono cuando reside en v8, esperamos que la API devuelva una cola a nuestra macro/microtarea y las ejecute en el siguiente bucle alrededor de la verificación de prioridad.

¿Por qué necesitamos sacarlo de v8 (ya que la mayoría de los diagramas muestran que el bucle de eventos reside fuera de v8)? si el bucle de eventos está fuera de v8, ¿significa que v8 ya no está ejecutando el código javascript, sino que el bucle de eventos externo ejecuta nuestro programa Javascript y otros códigos proporcionados por las bibliotecas respectivas?

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

0

Francamente, esta es también la primera vez que sé que el componente de bucle de eventos no es parte de v8.

Pero no tengo problemas para entender que podemos sacarlo de v8. Sé que no soy autoritario, pero aquí estoy compartiendo mi comprensión contigo:

Su modelo de mente anterior es como v8, bucles activamente ocupados para verificar la señal de continuación.

En el nuevo modelo, esa responsabilidad es simplemente cambiar a libuv, v8 registra una devolución de llamada a libuv, diciendo que "Estoy esperando la señal de una determinada interrupción de E/S de archivo/red/tiempo de espera, llámame cuando suceda", y luego, v8 se duerme, dejando a libuv ocupado en bucle.

Cuando llega esa señal, libuv devuelve la llamada a v8 para activarlo, y v8 continúa ejecutando tareas JS. Así que no, libuv no ejecuta JavaScript, sigue siendo v8.

Lo único que cambió es dónde colocar el código de bucle. Esto es solo una cuestión de dónde dibujar el límite entre los componentes del software.

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