Параллельное программирование. Лекция 16c. Технология Parallel LINQ (PLINQ) и класс Parallel

93 Просмотры
Издатель
Институт математики, механики и компьютерных наук им.И.И.Воровича ЮФУ http://mmcs.sfedu.ru. Лекции по параллельному программированию читает доцент кафедры алгебры и дискретной математики М.Э.Абрамян.
В лекциях используется электронный задачник по программированию Programming Taskbook http://ptaskbook.com
Дополнительные материалы доступны по ссылке http://edu.mmcs.sfedu.ru/course/view.php?id=74

Содержание: 00:00 Технология Parallel LINQ (PLINQ) - высокоуровневая параллельная технология для платформы .NET. Запрос AsParallel: распределение действий по последующей обработке данных из исходной последовательности по различным нитям. 05:13 Пример: применение технологии PLINQ для нахождения всех простых чисел из указанного диапазона. 11:41 Классы PLINQ: обобщенный класс ParallelQuery (параллельная последовательность) и реализация для него всех запросов LINQ как методов расширения обобщенного класса ParallelEnumerable. Запросы AsParallel и AsSequential. 15:07 Запросы класса ParallelEnumerable для создания параллельных последовательностей: Range и Repeat. Запросы с двумя последовательностями. Неэффективность многократного вызова запроса AsParallel. Возможный отказ системы PLINQ от распараллеливания. 18:45 Сохранение порядка следования элементов в параллельных последовательностях: запрос AsOrdered. Ограничения на распараллеливание некоторых запросов. 25:09 Настройка обязательного выполнения запросов в параллельном режиме: запрос WithExecutionMode. Указание рекомендуемого числа потоков: запрос WithDegreeOfParallelism. Побочные эффекты в PLINQ. 33:07 Завершающая обработка параллельных фрагментов последовательности без их слияния: запрос ForAll. 35:53 Варианты распределения элементов последовательности по потокам: блочное (динамическое), диапазонное (статическое) и hash-распределение. 40:02 Особенности блочного и диапазонного распределения и способы их настройки. 46:23 Непараллельные варианты запроса Aggregate и возможности по их распараллеливанию. 51:56 Параллельный вариант запроса Aggregate с параметром - фабрикой аккумуляторов. Пример: подсчет частоты появления букв в строке. Запрос Zip. 1:00:35 Высокоуровневое распараллеливание задач на основе класса Parallel платформы .NET. Метод Invoke класса Parallel, пример его использования. 1:06:37 Использование безопасных к потокам (thread-safe) коллекций для объединения результатов, полученных из различных задач. 1:09:20 Распараллеливание циклов с помощью методов For и ForEach класса Parallel, примеры. Вариант метода ForEach, позволяющий отслеживать номер итерации. 1:15:12 Средства досрочного прекращения циклов в методах For и ForEach, примеры их использования. Возвращаемые значения методов For и ForEach. 1:19:03 Типы коллекций, безопасных к потокам: ConcurrentStack, ConcurrentQueue, ConcurrentBag, ConcurrentDictionary. Причина отсутствия параллельного аналога списка List. Интерфейс IProducerConsumerCollection, его методы TryAdd и TryTake, их реализация для различных типов коллекций.
Категория
Занимательная механика
Комментариев нет.