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

165
Vistas
eficiencia del modelo de concurrencia de javascript

Como sabemos, JS usa el bucle de eventos para simular subprocesos múltiples en un solo subproceso. Estoy confundido acerca de su eficiencia.

Supongamos que queremos leer un archivo y hay una manera de usar la función de sistema de read de Linux. Según mi conocimiento, mientras se ejecuta la función de read , la CPU enviará el trabajo a DMA para que la CPU pueda hacer otras cosas.

En otros lenguajes reales de subprocesos múltiples como C++, creamos un nuevo subproceso para leer el archivo. Mientras DMA está procesando el archivo, la CPU realmente puede cambiar de ese hilo de lectura de archivos para hacer otros trabajos.

Pero en JS, solo hay un hilo que realmente funciona. Incluso ahora guarda este trabajo de lectura de archivos, pero en el futuro debe hacer ese trabajo en este hilo. Cada vez que desee llamar a la función de read , ya debe estar en la pila del subproceso, aunque la CPU puede dejar el trabajo en DMA, el subproceso todavía está bloqueando allí y no puede saltar a otro subproceso (porque solo hay un subproceso, ¿verdad?)

Entonces, creo que el modelo de bucle de eventos de JS no es realmente concurrencia, ¿verdad? A pesar de que puede guardar el trabajo temporalmente, todavía necesita la misma cantidad de tiempo para ocuparse del trabajo. El tiempo total de ejecución no se reduce. Estoy confundido y ayúdenme por favor.

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

0

Puede ejecutar subprocesos múltiples reales en javascript utilizando trabajadores web. No puede simular subprocesos múltiples en un entorno de un solo subproceso. Asíncrono y subprocesos múltiples no son lo mismo. Puede ejecutar async en javascript pero no subprocesos múltiples (sin WebWorkers).

about 4 years ago · Juan Pablo Isaza Denunciar

0

Incluso si JavaScript fuera de subproceso único (que ya no es gracias a Web Workers), podría pedirle al sistema operativo que realice muchas operaciones de E/S al mismo tiempo:

En lugar de usar E/S de bloqueo, donde le pedimos al sistema operativo que ponga el subproceso en reposo hasta que los datos estén aquí, podemos usar E/S sin bloqueo, donde le pedimos al sistema operativo que obtenga datos y nos notifique cuando esté aquí. , permitiéndonos hacer otras cosas mientras tanto.

Por ejemplo, en la API del sistema de archivos node.js, cada función existe en varios tipos:

  • Las API síncronas realizan todas las operaciones de forma síncrona, bloqueando el bucle de eventos hasta que la operación se completa o falla.
  • Las API de devolución de llamada realizan todas las operaciones de forma asíncrona, sin bloquear el bucle de eventos, luego invocan una función de devolución de llamada cuando se completa o se produce un error (las API de devolución de llamada usan el subproceso subyacente de Node.js para realizar operaciones del sistema de archivos fuera del subproceso del bucle de eventos).
  • Las API de Promises, que funcionan como las API de devolución de llamada, pero son más fáciles de usar.

por lo que podemos elegir si deseamos dormir hasta que los datos estén aquí, o hacer otras cosas en ese momento.

Vale la pena señalar que el hardware real no bloquea. Por ejemplo, Direct Memory Access permite que un disco coloque datos en la memoria sin involucrar una CPU e interrumpa la CPU una vez que se completa la transferencia.

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