Для установки нажмите кнопочку Установить расширение. И это всё.

Исходный код расширения WIKI 2 регулярно проверяется специалистами Mozilla Foundation, Google и Apple. Вы также можете это сделать в любой момент.

4,5
Келли Слэйтон
Мои поздравления с отличным проектом... что за великолепная идея!
Александр Григорьевский
Я использую WIKI 2 каждый день
и почти забыл как выглядит оригинальная Википедия.
Статистика
На русском, статей
Улучшено за 24 ч.
Добавлено за 24 ч.
Альтернативы
Недавние
Show all languages
Что мы делаем. Каждая страница проходит через несколько сотен совершенствующих техник. Совершенно та же Википедия. Только лучше.
.
Лео
Ньютон
Яркие
Мягкие

Из Википедии — свободной энциклопедии

Стек и компоненты .NET Framework до версии 4.5 включительно.
Стек и компоненты .NET Framework до версии 4.5 включительно.

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

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

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

Библиотека параллельных задач

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

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

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

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

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

Архитектура

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

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

См. также

Ссылки

  1. Сокращение от Common Language Runtime (рус. Общеязыковая среда выполнения)
  2. Что нового в .NET Framework 4. Дата обращения: 21 сентября 2011.
  3. 1 2 Программирование в эпоху параллелизма: Параллельное программирование с помощью PFX. Дата обращения: 16 октября 2007.
  4. 1 2 3 Журнал MSDN: Библиотека параллельных задач. Дата обращения: 16 октября 2007. Архивировано 14 октября 2007 года.
  5. 1 2 Июнь 2008 года. CTP — Параллельные расширения .NET FX. Дата обращения: 6 августа 2008.
  6. Сокращение от Language INtegrated Query (рус. Интегрированный языковой запрос)
  7. Сокращение от eXtensible Markup Language (рус. Расширяемый язык разметки)
  8. Сокращение от Task Parallel Library
  9. 1 2 Джо Даффи. Параллельное программирование в Windows. — 2009. — P. "887–929". — ISBN 978-0321434821.
  10. Даан Лейен; Вольфрам Шульте, Себастьян Буркхардт (2009). “Дизайн библиотеки параллельных задач”. Уведомления ACM SIGPLAN. 44 (10): 227. CiteSeerX 10.1.1.146.4197. DOI:10.1145/1639949.1640106. Используется устаревший параметр |coauthors= (справка)

Внешние ссылки

Эта страница в последний раз была отредактирована 25 мая 2021 в 11:50.
Как только страница обновилась в Википедии она обновляется в Вики 2.
Обычно почти сразу, изредка в течении часа.
Основа этой страницы находится в Википедии. Текст доступен по лицензии CC BY-SA 3.0 Unported License. Нетекстовые медиаданные доступны под собственными лицензиями. Wikipedia® — зарегистрированный товарный знак организации Wikimedia Foundation, Inc. WIKI 2 является независимой компанией и не аффилирована с Фондом Викимедиа (Wikimedia Foundation).