пользователей: 30398
предметов: 12406
вопросов: 234839
Конспект-online
РЕГИСТРАЦИЯ ЭКСКУРСИЯ

Понятие потоков. Виды многопоточности. Использование и управление потоками.

Потоки позволяют программе Visual Basic или C# выполнять параллельную обработку, за счет чего появляется возможность одновременного выполнения нескольких операций. Например, потоки можно использовать для наблюдения ввода данных пользователем, выполнения фоновых задач и обработки одновременных потоков ввода.

Потоки имеют следующие свойства:

  • Потоки позволяют программе выполнять параллельную обработку.
  • Пространство имен .NET Framework System.Threading упрощает использование потоков.
  • Потоки используют одни и те же ресурсы приложения. Дополнительные сведения см. в разделе Использование потоков и работа с потоками.

По умолчанию программа на языке Visual Basic или C# имеет один поток. Однако параллельно основному потоку могут создаваться и использоваться вспомогательные потоки. Эти потоки часто называются рабочими потоками.

Рабочие потоки могут использоваться для выполнения трудоемких или срочных задач без прерывания основного потока. Например, рабочие потоки часто используются в серверных приложениях для выполнения входящих запросов, не дожидаясь завершения выполнения предыдущего запроса. Рабочие потоки также используются для выполнения "фоновых" задач в настольных приложениях, что позволяет основному потоку (который отвечает за элементы пользовательского интерфейса) оставаться доступным для команд пользователя.

Разделение потоков позволяет решить проблемы с пропускной способностью и быстротой ответа системы, однако при этом возникают проблемы совместного использования ресурсов, в частности взаимоблокировки и состояния гонки. Использование нескольких потоков лучше всего подходит для тех задач, которые используют различные ресурсы, например дескрипторы файлов и сетевые подключения. Назначение нескольких потоков одному ресурсу, вероятнее всего, вызовет проблемы синхронизации и частую блокировку потоков во время ожидания, что сведет к минимуму целесообразность использования нескольких потоков.

Обычно рабочие потоки используются для выполнения трудоемких или срочных задач, для которых не требуется большое количество ресурсов, используемых другими потоками. Естественно, некоторые используемые программой ресурсы должны быть доступны для нескольких потоков. В этих случаях пространство имен System.Threading предоставляет классы для синхронизации потоков. Эти классы включают MutexMonitorInterlockedAutoResetEvent и ManualResetEvent.

Можно использовать некоторые или все эти классы для синхронизации работы нескольких потоков, но некоторые многопоточные функции поддерживаются языками Visual Basic и C#. Например, инструкция Оператор SyncLock в Visual Basic и инструкция Lock в C# обеспечивают возможности синхронизации за счет неявного использования класса Monitor.

 

В .NET Framework 4 многопоточное программирование значительно упростилось благодаря классам Parallel и TaskParallel LINQ (PLINQ), новым классам параллельных коллекций в пространстве имен System.Collections.Concurrent и новой модели программирования, построенной по принципу управления задачами, а не потоками.

Многие персональные компьютеры и рабочие станции имеют ЦП, содержащие два или четыре ядра, которые позволяют одновременно выполнять несколько потоков. В ближайшем будущем ожидается, что компьютеры будут иметь значительно больше ядер. Чтобы воспользоваться преимуществами существующего и будущего оборудования, можно распараллеливать код для распределения работы между несколькими процессорами. В прошлом распараллеливание требовало управления потоками и взаимоблокировками на низком уровне. Visual Studio 2010 и .NET Framework 4 улучшают поддержку параллельного программирования, путем предоставления новой среды выполнения, новых типов библиотек классов и новых средств диагностики. Эти функциональные возможности упрощают параллельную разработку, что позволяет разработчикам писать эффективный, детализированный и масштабируемый параллельный код с помощью естественных выразительных средств без необходимости непосредственной работы с потоками или пулом потоков. На рисунке ниже представлен общий обзор архитектуры параллельного программирования в .NET Framework 4.

 

 

 

 

 

 


11.01.2019; 17:02
хиты: 114
рейтинг:0
для добавления комментариев необходимо авторизироваться.
  Copyright © 2013-2024. All Rights Reserved. помощь