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

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

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

Совет

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

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

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

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

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

Как использовать parallel_invoke для написания параллельной подпрограммы сортировки

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

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

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

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

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

Руководство. Создание parallel_for Loop

Руководство. Создание parallel_for_each Loop

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

Как использовать параллельные контейнеры для повышения эффективности

Как использовать комбинирование для повышения производительности

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

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

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

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

Как использовать обработку исключений для разрыва из параллельной Loop
Здесь демонстрируются два способа отмены работы с параллельными данными.

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

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

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

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

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

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

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

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

Как использовать преобразователь в конвейере данных

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

Как отправить сообщение с постоянным интервалом

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

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

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

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

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

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

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

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

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

Как указать конкретные политики планировщика

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

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

Как использовать класс контекста для реализации параллельного семафора

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

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

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

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

См. также раздел

Ссылки