Bueno, en estos días, JavaScript es el jugador principal en todas las tecnologías de desarrollo web, en el lado del cliente para mejorar la interfaz de usuario, la lógica del lado del cliente, en algunos servidores web como la lógica del lado del servidor también
Agregue a eso el hecho de que las personas (al menos algunas de ellas) comenzaron a moverse en el desarrollo de juegos web de flash a javascript y HTML5
¡No es hora de que admita subprocesos múltiples! ¿Existen navegadores que permiten que JavaScript sea multiproceso o existe en algún estándar, HTML5 o versiones futuras?
Respuestas:
El subprocesamiento múltiple no se realizará en EcmaScript, pero puede exponerse en entornos host.
Los ejemplos clásicos son WebWorkers, que le permite activar un trabajador en segundo plano para trabajar y abusar
<iframe>
de él como una forma de generar nuevos procesos.Cabe señalar que no es necesario el subprocesamiento múltiple en JavaScript (hay excepciones, principalmente programas relacionados con gráficos). No necesita múltiples subprocesos, ya tiene un bucle de eventos para su GUI y su representación gráfica (lienzo) está acelerada por hardware (lo que significa que la GPU renderiza sus gráficos en paralelo para usted).
Aunque proyectos como webcl son bastante emocionantes.
fuente
NO
El subprocesamiento múltiple es una de las cosas más difíciles de hacer en el software. Hay demasiados casos de esquina que son realmente difíciles de resolver cuando su código no es determinista. (Estoy hablando de subprocesos múltiples con cerraduras, etc.). Además, todas las diversas bibliotecas de JavaScript se basan en el supuesto de que no es multiproceso.
Dicho esto, hay trabajadores web que le brindan un marco basado en actores para realizar operaciones de tipo de procesamiento múltiple. Puede crear trabajadores y pasar datos de un lado a otro a través de eventos.
EDITAR: La otra razón es que cuando se creó JavaScript, se hizo con la suposición de que se usaría para tareas pequeñas, por lo que no se incluyó concurrencia. Al actualizarlo ahora se rompería una gran cantidad de código. Al agregar trabajadores web, ha sido posible tener un sistema donde hay concurrencia sin memoria compartida, pero al usar actores, un modelo de concurrencia que ha demostrado ser muy robusto en varios otros idiomas como Erlang, Scala, Clojure etc.
(SI no puede decir que realmente no me gusta la concurrencia basada en bloqueo)
fuente
Multi threading is one of the hardest things in software to get right.
- ¡Solo me sorprendió con esto! El navegador que está utilizando, el sistema operativo de su escritorio, el servidor web que sirve esta página, prácticamente todas las aplicaciones que utiliza todos los días son multiproceso. ¿ESTÁS SEGURO DE QUE LO SIGNIFICA? Sin embargo, para despreciarlo, pero lo haré si dicemultithreading is not done because it is hard
abrir javascript para multihilo creará más problemas de los que resuelve:
la arquitectura actual está basada en eventos de un solo subproceso (se ejecuta en el hilo de la interfaz de usuario con más frecuencia), en otras palabras, con cada bloque de código puede estar seguro de que nada en el entorno cambiará de principio a fin, excepto lo que se cambia en el código
tan pronto como permita la ejecución preferente o la ejecución paralela, esta función desaparecerá, esto significa que debe aplicar bloqueos a los datos que desea mutar, además de tener todas las condiciones de carrera difíciles de depurar para evitar
es posible tener una ejecución pseudo-paralela usando tiempos de espera, esto significa dividir las funciones grandes o largas en trozos atómicos y usar
setTimeout(function(){nextstep(args);},1);
para que otras cosas puedan ejecutarse si es necesariofuente
Intel lanzó River Trail hace algún tiempo, que permite la programación paralela en Javascript. Sin embargo, es un complemento solo para Firefox y no he oído hablar de una hoja de ruta que incorpore esta tecnología al W3C, mucho menos ECMA.
fuente