Лекция: Многопоточность и параллелизм в .NET. Особенности.

Многопоточность в среде .NET Framework реализована следующим образом: существуют два типа потоков: высокоприоритетный и низкоприоритетный.

Высокоприоритетный(foreground) поток в отличии от низкоприоритетного (или фонового -background), назначается, как тип потока по умолчанию, а так же не будет остановлен, в том случае, если все высокоприоритетные потоки к его процессе будут остановлены.

 

Параллелизм означает управление количеством потоков, одновременно активных в некотором контексте InstanceContext. Управление осуществляется с помощью System.ServiceModel.ServiceBehaviorAttribute.ConcurrencyMode с перечислением ConcurrencyMode.

Доступны следующие три режима параллелизма:

  • Single: в каждом контексте экземпляра одновременно допускается максимум один поток, обрабатывающий сообщения в контексте экземпляра. Другие потоки, которым требуется использовать этот же контекст экземпляра, должны оставаться блокированными, пока исходный поток не выйдет из контекста экземпляра.
  • Multiple: каждый экземпляр службы может иметь несколько потоков, параллельно обрабатывающих сообщения. Чтобы использовать этот режим параллелизма, реализация службы должна быть потокобезопасной.
  • Reentrant: каждый экземпляр службы одновременно обрабатывает одно сообщение, но принимает вызовы операций с повторным входом. Служба принимает такие вызовы только при вызове через объект клиента WCF.

Использование параллелизма связано с режимом создания экземпляров. В режиме создания экземпляров PerCallпараллелизм не имеет значения, так как каждое сообщение обрабатывается новым контекстом InstanceContext и, следовательно, в контексте InstanceContext никогда не бывает активно несколько потоков.

 

 

еще рефераты
Еще работы по информатике