2011-07-07 26 views
8

JavaScript tiene una sola hebra: Silverlight no, pero la interacción entre JavaScript y Silverlight debe realizarse en la hebra de la interfaz de usuario de Silverlight.¿Cuál es la relación entre el hilo de JavaScript y el hilo de la interfaz de usuario de Silverlight?

Sin embargo, ¿cuál es exactamente la relación entre el subproceso de IU de Silverlight y el subproceso de JavaScript? ¿Son, por definición, el mismo hilo, o hilos separados con las interacciones realizadas puramente a través de los respectivos bucles de eventos y bloqueando un hilo cuando se espera el otro (al evaluar/llamar a JavaScript desde Silverlight, por ejemplo)? Dicho de otra forma, ¿JavaScript se puede ejecutar simultáneamente con las acciones de Silverlight en el subproceso de la interfaz de usuario (y varias instancias de Silverlight alojadas en la misma página tienen sus subprocesos de interfaz de usuario en ejecución simultáneamente)?

Respuesta

0

No he usado Silverlight, pero he trabajado bastante extensamente con Applets y Flash de Java, así que comentaré desde esa perspectiva.

Tienes razón en que JavaScript tiene un solo hilo. Cualquier cosa que lo bloquee impedirá todos los demás cálculos y acciones. Incluso bloqueará el navegador en algunos casos, aunque los navegadores más nuevos son cada vez mejores al separar las pestañas en procesos separados, lo que ayuda.

Cualquier hilo en un complemento como Silverlight está completamente separado de JavaScript en el navegador. Sin embargo, las interfaces entre ellos pueden estar bloqueando. Si el hilo de la interfaz de usuario de Silverlight bloquea cuando se comunica con JS nativo, entonces no se realizará ningún otro trabajo en ese hilo mientras está en espera. Otros hilos pueden continuar funcionando normalmente.

Para resolver su pregunta acerca de si JS se puede ejecutar de forma simultánea mientras se ejecutan las acciones en el hilo de la interfaz de usuario de Silverlight, no veo por qué no. Tienen tiempos de ejecución por separado, y mientras no se estén intercomunicando (lo que causaría que bloqueen), deberían poder seguir funcionando bien en forma aislada.

Mi intuición dice que lo mismo sucedería con varias instancias de Silverlight en la misma página, pero esa es realmente una pregunta de diseño arquitectónico que no puedo responder.

Espero que esto ayude!

Cuestiones relacionadas