~~~~~~~~~~~~~~~~~~~~ Arc.Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~ 
Номер скриншота №:
✰ 6E8FC483073B241BF7557EDFDFAD51D6__1677083460 ✰
Заголовок документа оригинал.:
✰ Parallel Extensions - Wikipedia ✰
Заголовок документа перевод.:
✰ Параллельные расширения — Википедия ✰
Снимок документа находящегося по адресу (URL):
✰ https://en.wikipedia.org/wiki/Parallel_Extensions ✰
Адрес хранения снимка оригинал (URL):
✰ https://arc.ask3.ru/arc/aa/6e/d6/6e8fc483073b241bf7557edfdfad51d6.html ✰
Адрес хранения снимка перевод (URL):
✰ https://arc.ask3.ru/arc/aa/6e/d6/6e8fc483073b241bf7557edfdfad51d6__translat.html ✰
Дата и время сохранения документа:
✰ 22.06.2024 17:45:18 (GMT+3, MSK) ✰
Дата и время изменения документа (по данным источника):
✰ 22 February 2023, at 19:31 (UTC). ✰ 

~~~~~~~~~~~~~~~~~~~~~~ Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~~ 
Сервисы Ask3.ru: 
 Архив документов (Снимки документов, в формате HTML, PDF, PNG - подписанные ЭЦП, доказывающие существование документа в момент подписи. Перевод сохраненных документов на русский язык.)https://arc.ask3.ruОтветы на вопросы (Сервис ответов на вопросы, в основном, научной направленности)https://ask3.ru/answer2questionТоварный сопоставитель (Сервис сравнения и выбора товаров) ✰✰
✰ https://ask3.ru/product2collationПартнерыhttps://comrades.ask3.ru


Совет. Чтобы искать на странице, нажмите Ctrl+F или ⌘-F (для MacOS) и введите запрос в поле поиска.
Arc.Ask3.ru: далее начало оригинального документа

Параллельные расширения — Википедия 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. ^ Перейти обратно: а б «Программирование в эпоху параллелизма: параллельное программирование с PFX» . Проверено 16 октября 2007 г.
  3. ^ Перейти обратно: а б с «Журнал MSDN: Библиотека параллельных задач» . Архивировано из оригинала 14 октября 2007 года . Проверено 16 октября 2007 г.
  4. ^ Перейти обратно: а б «CTP, июнь 2008 г. — параллельные расширения .NET FX» . Проверено 6 августа 2008 г.
  5. ^ «Более мощные агрегаты в PLINQ» . Проверено 6 августа 2008 г.
  6. ^ Перейти обратно: а б Даффи, Джо (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
Номер скриншота №: 6E8FC483073B241BF7557EDFDFAD51D6__1677083460
URL1:https://en.wikipedia.org/wiki/Parallel_Extensions
Заголовок, (Title) документа по адресу, URL1:
Parallel Extensions - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть, любые претензии не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, денежную единицу можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)