2010-03-15 12 views

Respuesta

11

JavaScript does not support native multithreading en los navegadores web actuales. Incluso si lo hiciera, apuesto a que IE 6 no lo habría soportado :)

Ejecutar sus scripts en múltiples iframes podría ser una solución, como Jason Kester suggested in another answer.

Además, para los navegadores modernos que podría estar interesado en probar Web Workers, pero esto es definitivamente algo fuera de la liga de la IE 6:

+2

+1 (Y es bueno que no, creo ;-) – ChristopheD

+1

¿Qué hay de los trabajadores de la web? No en IE6, obviamente, pero aún así ... – luiscubal

+0

@luiscubal Sí, buen punto. De hecho, se mencionan en la publicación a la que me he vinculado originalmente. Modifiqué mi respuesta para incluir más información. –

1

Google Gears es un plugin que funciona con IE6 e incluye algo llamado WorkerPools. Parece que Google Gears ya no se está desarrollando muy activamente, porque ha intentado trasladar la mayoría de las ideas de Gears a HTML5. WorkerPools son básicamente procesos en segundo plano que no comparten estado y solo se comunican a través de mensajes. En HTML5 esto se ha convertido en WebWorkers. Puede encontrar más información aquí: http://code.google.com/apis/gears/api_workerpool.html

2

Bueno, HTML5 se acerca con Web-Workers. Pero dudo mucho que haya una biblioteca que crea un contenedor para usarlo en IE6.

Does my browser support web workers?

+0

¡estoy sorprendido de que nadie haya mencionado a los trabajadores de la web! –

+0

+1 por mencionarlos :) –

1

Si solamente desea escribir código sincrónico y así evitar tener que lidiar con los controladores de eventos de escritura por todo el lugar, puede intentar: Strands

3

ejecutar sus tareas en IFrames

Suponiendo que está hablando de multitarea en el lado del cliente, puede abrir n marcos en su página, cada uno apuntando a una página en su dominio.

Hay muchas maneras de diseñarlo desde allí. Probablemente lo más fácil sería tener un .js único que incluya que ejecute desde cada fotograma. Llama a casa a parent.readyToGo() o lo que sea, y le asigna un trabajo. Los métodos de trabajador pueden llamar a algo como parent.taskFinished() para informar cuando hayan terminado.

Lo que es más importante, no escuche a nadie diciéndole que no ejecute su aplicación javascript multiproceso de misión crítica en IE6. Estoy seguro de que tienes buenas razones :)