2011-07-07 21 views
8

JavaScriptはシングルスレッドです - Silverlightはありませんが、JavaScriptとSilverlightのやりとりはSilverlight UIスレッドで実行する必要があります。JavaScriptスレッドとSilverlight UIスレッドの関係は何ですか?

しかし、Silverlight UIスレッドとJavaScriptスレッドの関係はどうなりますか?それらは同じ定義のスレッドでも、別々のスレッドでも、それぞれのイベントループを介して実行される相互作用があり、他のスレッドを待っているときにスレッドをブロックしていますか(たとえばSilverlightからJavaScriptを評価/呼び出しするとき)?別の言い方をすれば、JavaScriptはUIスレッド上でSilverlightアクションと同時に実行できます(同じページでホストされている複数のSilverlightインスタンスで同時にUIスレッドを実行できますか)。

答えて

0

私はSilverlightを使用していませんが、JavaアプレットとFlashで広範な作業を行っています。その点からコメントします。

JavaScriptはシングルスレッドであるといえます。それをブロックするものは、他のすべての計算やアクションを妨げるでしょう。場合によってはブラウザをロックすることさえありますが、新しいブラウザではタブを別々のプロセスに分けることができて便利です。

Silverlightのようなプラグインのスレッドは、ブラウザのJavaScriptから完全に分離されています。しかし、それらの間のインターフェイスはブロックされている可能性があります。ネイティブJSとの通信中にSil​​verlightのUIスレッドがブロックされた場合、待機中にそのスレッドで他の作業は行われません。他のスレッドは正常に動作し続けます。

Silverlight UIスレッドのアクションが実行されている間にJSが同時に実行できるかどうかについての質問に答えるには、なぜそうでないのか分かりません。彼らは別々のランタイムを持っており、相互通信していない限り(1つをブロックする原因になる)、彼らは孤立して正常に動作し続けることができるはずです。

私のガットは、同じページ内の複数のSilverlightインスタンスについて同じことが起こると言いますが、それは実際に私が答えることができないアーキテクチャ設計の質問です。

希望すると便利です。

関連する問題