Поделиться через


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

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

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

Совет

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

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

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

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

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

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

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

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

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

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

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

Как написать цикл parallel_for

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Как: выбрать среди завершенных задач

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

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

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

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

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

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

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

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

Как: управлять экземпляром планировщика

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

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

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

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

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

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

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

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

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

См. также

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