Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

166
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda