Какова связь между потоком JavaScript и потоком пользовательского интерфейса Silverlight? - PullRequest
8 голосов
/ 07 июля 2011

JavaScript является однопоточным - Silverlight нет, но взаимодействие между JavaScript и Silverlight должно выполняться в потоке пользовательского интерфейса Silverlight.

Однако какова связь между потоком пользовательского интерфейса Silverlight и потоком JavaScript? Являются ли они по определению одним и тем же потоком или отдельными потоками с взаимодействиями, выполняемыми исключительно через соответствующие циклы событий и блокирующие один поток при ожидании другого (например, при оценке / вызове JavaScript из Silverlight)? Иными словами, может ли JavaScript выполняться одновременно с действиями Silverlight в потоке пользовательского интерфейса (и могут ли несколько экземпляров Silverlight, размещенных на одной странице, одновременно выполнять потоки пользовательского интерфейса)?

1 Ответ

0 голосов
/ 08 июля 2011

Я не использовал Silverlight, но я проделал довольно обширную работу с Java-апплетами и Flash, поэтому я прокомментирую с этой точки зрения.

Вы правы, что JavaScript является однопоточным.Все, что заставляет его блокировать, предотвратит все другие вычисления и действия.В некоторых случаях он даже блокирует браузер, хотя новые браузеры становятся лучше при разделении вкладок на отдельные процессы, что помогает.

Любая нить в плагине, например Silverlight, полностью отделена от JavaScript в браузере.Интерфейсы между ними могут быть заблокированы.Если поток пользовательского интерфейса Silverlight блокируется при обмене данными с собственным JS, никакая другая работа не будет выполняться в этом потоке, пока он ожидает.Другие потоки могут продолжать работать в обычном режиме.

Чтобы ответить на ваш вопрос о том, может ли JS выполняться одновременно, когда выполняются действия в потоке пользовательского интерфейса Silverlight, я не вижу, почему нет.У них есть отдельные среды выполнения, и до тех пор, пока они не взаимодействуют друг с другом (что может привести к блокировке), они должны иметь возможность нормально работать в изоляции.

В моей интуиции говорится, что то же самое можно сказать о множественныхЭкземпляры Silverlight на той же странице, но это действительно вопрос архитектурного проектирования, на который я не могу ответить.

Надеюсь, это поможет!

...