Среда выполнения с параллелизмом

Исполняющая среда с параллелизмом для C++ помогает создавать надежные, масштабируемые, быстро реагирующие параллельные приложения. Она повышает уровень абстракции, чтобы пользователю не приходилось управлять подробностями инфраструктуры, связанными с параллелизмом. Ее также можно использовать для указания политик планирования, соответствующих требованиям качества обслуживания приложений. Эти ресурсы помогут вам начать работу с исполняющей средой с параллелизмом.

Справочная документация см. в справочной документации.

Совет

Исполняющая среда с параллелизмом интенсивно использует возможности C++11 и соответствует более современному стилю программирования на C++. Дополнительные сведения см. в статье "Добро пожаловать в C++".

Выбор возможности среды выполнения с параллелизмом

Статья Описание
Обзор Объясняет, почему важна среда выполнения с параллелизмом и описывает ее основные компоненты.
Сравнение с другими моделями параллелизма Показывает характеристики среды выполнения с параллелизмом в сравнении с другими моделями параллелизма, например пулом потоков Windows и OpenMP, чтобы использовать ту модель параллелизма, которая лучше всего соответствует требованиям приложения.
Переход от OpenMP к среде выполнения с параллелизмом Здесь OpenMP сравнивается с исполняющей средой с параллелизмом, и предоставляются примеры способов миграции существующего кода OpenMP для использования исполняющей среды с параллелизмом.
Библиотека параллельных шаблонов Здесь представлены общие сведения о работе с PPL, предоставляющей параллельные циклы, задачи и контейнеры.
Библиотека асинхронных агентов Здесь приводятся способы использования асинхронных агентов и функций передачи сообщений, позволяющих встроить в приложения потоки данных и обеспечить конвейерную обработку задач.
Планировщик заданий Содержит описание планировщика задач, который позволяет точно настроить производительность ваших приложений для настольных систем, использующих исполняющую среду с параллелизмом.

Параллелизм задач в PPL

Статья Описание
Параллелизм задач

Практическое руководство. Использование функции parallel_invoke для написания программы параллельной сортировки

Практическое руководство. Использование функции parallel_invoke для выполнения параллельных операций

Практическое руководство. Создание задачи, выполняемой после задержки
Содержит описание задач и групп задач, которые могут помочь в создании асинхронного кода и декомпозиции параллельной работы на меньшие части.
Пошаговое руководство. Реализация фьючерсов Здесь показано, как объединить возможности исполняющей среды с параллелизмом для выполнения более объемной задачи.
Пошаговое руководство. Удаление задач из потока пользовательского интерфейса Здесь показано, как переместить работу, выполняемую потоком ИП, в рабочий поток в приложении MFC.
Рекомендации по работе с библиотекой параллельных шаблонов

Общие рекомендации в среде выполнения с параллелизмом
Рекомендации по работе с PPL.

Параллелизм данных в PPL

Статья Описание
Параллельные алгоритмы

Практическое руководство. Написание цикла parallel_for

Практическое руководство. Написание цикла parallel_for_each

Практическое руководство. Параллельное выполнение операций сопоставления и сокращения числа элементов
Здесь приводится описание parallel_for, parallel_for_each, parallel_invokeи других параллельных алгоритмов. Используйте параллельные алгоритмы для решения задач параллельных данных , включающих коллекции данных.
Параллельные контейнеры и объекты

Практическое руководство. Использование параллельных контейнеров для повышения эффективности

Практическое руководство. Использование класса combinable для повышения производительности

Практическое руководство. Использование класса combinable для комбинирования наборов
Здесь приводится описание классов combinable , concurrent_vector, concurrent_queue, concurrent_unordered_mapи других параллельных контейнеров. Используйте параллельные контейнеры и объекты, когда требуются контейнеры, предоставляющие потокобезопасный доступ к своим элементам.
Рекомендации по работе с библиотекой параллельных шаблонов

Общие рекомендации в среде выполнения с параллелизмом
Рекомендации по работе с PPL.

Отмена задач и параллельных алгоритмов

Статья Описание
Отмена в библиотеке параллельных шаблонов Здесь описывается роль отмены в PPL, включая способы создания запросов отмены и реагирования на них.
Практическое руководство. Использование отмены для выхода из параллельного цикла

Практическое руководство. Использование обработки исключений для выхода из параллельного цикла
Здесь демонстрируются два способа отмены работы с параллельными данными.

Приложения универсальной платформы Windows

Статья Описание
Создание асинхронных операций на C++ для приложений UWP Описывает некоторые ключевые моменты, которые следует учитывать при использовании среды выполнения параллелизма для создания асинхронных операций в приложении UWP.
Пошаговое руководство. Подключение с использованием задач и HTTP-запросов XML Показывает, как объединить задачи PPL с IXMLHTTPRequest2IXMLHTTPRequest2Callback интерфейсами для отправки HTTP-запросов GET и POST в веб-службу в приложении UWP.
примеры приложений среда выполнения Windows Содержит загружаемые примеры кода и демонстрационные приложения для среда выполнения Windows.

Программирование потоков данных в библиотеке асинхронных агентов

Статья Описание
Асинхронные агенты

Асинхронные блоки сообщений

Функции передачи сообщений

Практическое руководство. Реализация различных шаблонов "источник-приемник"

Практическое руководство. Предоставление рабочих функций классам call и transformer

Практическое руководство. Использование преобразователя в конвейере данных

Практическое руководство. Выбор среди завершенных задач

Практическое руководство. Отправка сообщений через определенные интервалы

Практическое руководство. Использование фильтра блоков сообщений
Здесь описываются асинхронные агенты, блоки сообщений и функции передачи сообщений, которые являются стандартными сборочными блоками для выполнения операций с потоками данных в исполняющей среде с параллелизмом.
Пошаговое руководство. Создание приложения на основе агента

Пошаговое руководство. Создание агента потоков данных
Здесь демонстрируется создание простого приложения на основе агентов.
Пошаговое руководство. Создание сети обработки изображений Здесь показано, как создавать сеть асинхронных блоков сообщений, выполняющих обработку изображений.
Пошаговое руководство. Использование класса join для предотвращения взаимоблокировки На примере проблемы обедающих философов показано использование исполняющей среды с параллелизмом для недопущения взаимоблокировок в приложении.
Пошаговое руководство. Создание пользовательского блока сообщений Здесь описано, как создать пользовательский тип блока сообщений, сортирующий входящие сообщения по приоритету.
Рекомендации по работе с библиотекой асинхронных агентов

Общие рекомендации в среде выполнения с параллелизмом
Рекомендации по работе с агентами.

Обработка и отладка исключений

Статья Описание
Обработка исключений Здесь описана работа с исключениями в среде выполнения с параллелизмом.
Средства диагностики параллельного выполнения Описывает способы оптимизации приложений и наиболее эффективного использования среды выполнения с параллелизмом.

Настройка производительности

Статья Описание
Средства диагностики параллельного выполнения Описывает способы оптимизации приложений и наиболее эффективного использования среды выполнения с параллелизмом.
Экземпляры планировщика

Практическое руководство. Управление экземпляром планировщика

Политики планировщика

Практическое руководство. Задание определенных политик планировщика

Практическое руководство. Создание агентов, использующих определенные политики планировщика
Здесь показаны способы управления экземплярами планировщиков и политиками планировщика. В классических приложениях политики планировщика позволяют связывать определенные правила с определенными типами рабочих нагрузок. Например, можно создать один экземпляр планировщика для выполнения некоторых задач с повышенным приоритетом потока и использовать планировщик по умолчанию для выполнения задач с обычным приоритетом потока.
Группы планирования

Практическое руководство. Использование групп планирования для определения порядка выполнения
Демонстрирует использование групп планирования для группировки связанных задач. Например, вам может потребоваться высокая локальность связанных задач, если эти задачи лучше выполнять в одном узле процессора.
Упрощенные задачи Здесь описывается полезность легковесных задач при создании работы, которая не требует распределения нагрузки или отмены, и как они также могут использоваться для адаптации существующего кода для использования с исполняющей средой с параллелизмом.
Контексты

Практическое руководство. Использование класса Context для реализации семафора, поддерживающего параллельный доступ

Практическое руководство. Использование лимита подписки для устранения задержек
Здесь приводятся способы управления поведением потоков, управляемых исполняющей средой с параллелизмом.
Функции управления памятью

Практическое руководство. Использование функций Alloc и Free для повышения производительности операций с памятью
Здесь описываются функции управления памятью, предоставляемые исполняющей средой с параллелизмом для параллельного выделения и высвобождения памяти.

Дополнительные ресурсы

Статья Описание
Шаблоны асинхронного программирования и советы по Hilo (приложения Магазина Windows на C++ и XAML) Узнайте, как мы использовали среду выполнения параллелизма для реализации асинхронных операций в Hilo, приложения среда выполнения Windows с помощью C++ и XAML.
Блог Parallel Programming in Native Code Содержит дополнительные подробные статьи о параллельном программировании в среде выполнения с параллелизмом.
Форум Parallel Computing in C++ and Native Code Позволяет участвовать в обсуждениях сообщества о среде выполнения с параллелизмом.
Параллельное программирование Узнайте о модели параллельного программирования, доступной в платформа .NET Framework.

См. также

Справочные материалы