Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

186
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!