Параллельные расширения
-
Обзор библиотеки Parallel Extensions
- Разработана Microsoft Research и CLR, выпущена в .NET Framework 4.0
- Включает параллельный LINQ (PLINQ) и параллельную библиотеку задач (TPL)
- Содержит координационные структуры данных (CDS) для синхронизации параллельных задач
-
Параллельный LINQ (PLINQ)
- Распараллеливает запросы к объектам и XML-данным
- Обеспечивает параллелизм данных через запросы
- Требует реализации интерфейса IParallelEnumerable
- Использует TPL для выполнения внутренних операций
-
Параллельная библиотека задач (TPL)
- Предоставляет параллельные конструкции для задач
- Включает задачи, фьючерсы и Parallel class
- Управляет запуском и завершением потоков, масштабированием в соответствии с процессорами
-
Архитектура и использование
- Основная единица кода — задача, обычно лямбда-функция
- PLINQ и TPL API создают задачи через разделение запросов и циклов
- PFX включает диспетчер задач с глобальной очередью и пулом потоков
- Потоки связаны с очередями задач, количество потоков зависит от количества процессоров
- Задачи выполняются независимо, но требуют синхронизации при использовании общих ресурсов
-
Сравнение с другими технологиями
- Упоминаются Cilk/Cilk Plus, Grand Central Dispatch, Java Concurrency, TBB и ReactiveX
- Ссылки на внешние ресурсы и примеры использования параллелизма в финансовых операциях