Jump to content

Параллельные расширения

API-интерфейсы магазина .NET
Асинхронная модель
.NET Framework Стек

Parallel Extensions — это название управляемого параллелизма библиотеки , разработанной в результате сотрудничества Microsoft Research и команды CLR в Microsoft . Библиотека была выпущена в версии 4.0 .NET Framework . [1] Он состоит из двух частей: параллельного LINQ (PLINQ) и библиотеки параллельных задач (TPL). [2] [3] Он также состоит из набора структур данных координации (CDS) — наборов структур данных, используемых для синхронизации и координации выполнения параллельных задач. [4]

Параллельный LINQ

[ редактировать ]

PLINQ или Parallel LINQ , распараллелив выполнение запросов к объектам (LINQ to Objects) и данным XML (LINQ to XML). PLINQ предназначен для выявления параллелизма данных с помощью запросов. [2] Любые вычисления над объектами, реализованные в виде запросов, могут быть распараллелены с помощью PLINQ. Однако объекты должны реализовывать IParallelEnumerable интерфейс, который определяется самим PLINQ. Внутри он использует TPL для выполнения. [4] [5]

Параллельная библиотека задач

[ редактировать ]

Библиотека параллельных задач ( TPL ) — это компонент параллелизма задач в составе параллельных расширений для .NET. [6] Он предоставляет параллельные конструкции, такие как параллельный For и ForEach циклы, используя обычные вызовы методов и делегаты , поэтому конструкции можно использовать из любых языков CLI . Работу по созданию и завершению потоков , а также масштабированию количества потоков в соответствии с количеством доступных процессоров выполняет сама библиотека. [3] использование планировщика кражи работы . [7]

TPL также включает в себя другие конструкции, такие как Task и Future . Задача — это действие , которое может выполняться независимо от остальной части программы. В этом смысле он семантически эквивалентен потоку, за исключением того, что он является более легким объектом и не требует затрат на создание потока ОС. Задачи ставятся в очередь объектом диспетчера задач и планируются для выполнения в нескольких потоках ОС в пуле потоков, когда приходит их очередь.

Будущее — это задача, которая возвращает результат. Результат вычисляется в фоновом потоке, инкапсулированном объектом Future , и сохраняется в буфере до тех пор, пока не будет получен. [3] Если будет предпринята попытка получить результат до того, как он будет вычислен, запрашивающий поток будет заблокирован до тех пор, пока результат не будет доступен. [6]

Другая конструкция TPL — класс Parallel .TPL обеспечивает базовую форму структурированного параллелизма посредством трех статических методов класса Parallel:

Параллельный вызов
Параллельно выполняет массив делегатов Action, а затем ожидает их завершения.
Параллельно.Для
Параллельный эквивалент цикла for C#.
Параллельный.ForEach
Параллельный эквивалент цикла foreach в C#.

Архитектура

[ редактировать ]

Основная концепция параллельных расширений .NET — это Task, который представляет собой небольшой блок кода, обычно представленный в виде лямбда-функции , который может выполняться независимо. И PLINQ, и TPL API предоставляют методы для создания задач: PLINQ делит запрос на более мелкие задачи, а Parallel.For, Parallel.ForEach и Parallel.Invoke методы делят цикл на задачи.

PFX включает в себя Task Manager объект, который планирует выполнение задач. Диспетчер задач содержит глобальную очередь задач, которые затем выполняются. Он также инкапсулирует несколько потоков , в которых выполняются задачи. По умолчанию создается столько потоков, сколько процессоров (или ядер процессоров) имеется в системе, хотя это число можно изменить вручную. Каждый поток связан с очередью задач, специфичной для потока. В режиме ожидания каждый поток берет пакет задач и помещает их в свою локальную очередь, где они затем выполняются одна за другой. Если глобальная очередь пуста, поток будет искать задачи в очередях своих одноранговых узлов и брать задачи, которые находились в очереди дольше всего ( кража задач ). Во время выполнения Задачи будут выполняться независимо, при этом изменение состояния одной Задачи будет независимым от других. В результате, если они используют общий ресурс, их все равно необходимо синхронизировать вручную с помощью блокировок или других конструкций.

См. также

[ редактировать ]
  1. ^ «Что нового в .NET Framework 4» . Проверено 21 сентября 2011 г.
  2. ^ Jump up to: а б «Программирование в эпоху параллелизма: параллельное программирование с PFX» . Проверено 16 октября 2007 г.
  3. ^ Jump up to: а б с «Журнал MSDN: Библиотека параллельных задач» . Архивировано из оригинала 14 октября 2007 года . Проверено 16 октября 2007 г.
  4. ^ Jump up to: а б «CTP, июнь 2008 г. — параллельные расширения .NET FX» . Проверено 6 августа 2008 г.
  5. ^ «Более мощные агрегаты в PLINQ» . Проверено 6 августа 2008 г.
  6. ^ Jump up to: а б Даффи, Джо (2009). Параллельное программирование в Windows . стр. 887–929. ISBN  978-0321434821 .
  7. ^ Лейен, Даан; Шульте, Вольфрам; Буркхардт, Себастьян (2009). «Проектирование библиотеки параллельных задач». Уведомления ACM SIGPLAN . 44 (10): 227. CiteSeerX   10.1.1.146.4197 . дои : 10.1145/1639949.1640106 .
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 94b39a273c9ac78a40da5676b1fbf9c8__1677083460
URL1:https://arc.ask3.ru/arc/aa/94/c8/94b39a273c9ac78a40da5676b1fbf9c8.html
Заголовок, (Title) документа по адресу, URL1:
Parallel Extensions - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)