Главная » Silverlight » Многопоточность

0

Платформа Silverlight поддерживает многопоточность, что позволяет выполнять несколько частей кода одновременно. — ключевой компонент полнофункциональной структуры .NET Framework, часто используемый в мощных клиентских приложениях WPF и Windows Forms. Однако многопоточности нет в боль­шинстве сред разработки приложений для браузеров. Наиболее заметно ее отсутствие в JavaScript и Flash.

Средства многопоточности в Silverlight очень похожи на аналогичные средства в .NET Framework. Как и в .NET Framework, разработчик приложений Silverlight может созда­вать новые потоки с помощью класса Thread, управлять длительными операциями с по­мощью класса BackgroundWorker и даже направлять задачи в пул рабочих потоков с помо­щью класса ThreadPool. Все эти компоненты Silverlight почти полностью аналогичны соответствующим компонентам .NET Framework, поэтому разработчик, знакомый с мно­гопоточными клиентскими приложениями .NET, быстро почувствует себя в Silverlight, как дома. Впрочем, есть некоторые ограничения. Например, в Silverlight нельзя управлять приоритетами потоков с помощью кода. Тем не менее незначительные ограничения по­токов Silverlight не мешают им быть мощным средством управления приложением.

В этой главе рассматривается низкоуровневый класс Thread, предоставляющий гибкие средства создания новых потоков. Затем обсуждается модель потоков Silverlight и правила их выполнения. И наконец, рассматривается высокоуровневый класс BackgroundWorker, предоставляющий удобный способ обработки фоновых задач.

Новые средства. Средства обеспечения многопоточности в Silverlight 3 не изменились. Существующие средства многопоточности работают безупречно.

Основы многопоточности

При создании потока (thread) разработчик пишет код таким образом, будто каждый поток выполняется независимо от других. Операционная система Windows предостав­ляет каждому потоку короткий интервал времени, после которого замораживает поток, переводя его в состояние приостановленного выполнения. Через несколько миллисе­кунд операционная система размораживает поток, позволяя ему выполнить очередную порцию задачи.

Такая модель постоянных прерываний называется вытесняющей многозадачно­стью (preemptive multitasking). Она реализуется операционной системой и не управля­ется приложением Silverlight. Приложение работает так, будто все потоки выполняются одновременно, причем каждый поток выполняется как независимая программа, реша­ющая собственную задачу.

Примечание. Если на компьютере установлено несколько процессоров или двухъядерный процессор, несколько потоков действительно могут выполняться одновременно. Однако это не обязательно, потому что надстройка Silverlight и другие клиентские приложения тоже могут потребовать у операционной системы предоставить им процессор. Кроме того, высокоуровневые коды Silverlight транслируются в низкоуровневые инструкции. В некоторых случаях несколько процессоров могут выполнять одновременно несколько инструкций. Таким образом, один поток иногда загружает несколько процессоров.

Источник: Мак-Дональд, Мэтью. Silverlight 3 с примерами на С# для профессионалов. : Пер. с англ. —- М. : ООО «И.Д. Вильяме», 2010. — 656 с. : ил. — Парал. тит. англ.

По теме:

  • Комментарии