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

Исполняющая среда с параллелизмом для C++ помогает создавать надежные, масштабируемые, быстро реагирующие параллельные приложения.The Concurrency Runtime for C++ helps you write robust, scalable, and responsive parallel applications. Она повышает уровень абстракции, чтобы пользователю не приходилось управлять подробностями инфраструктуры, связанными с параллелизмом.It raises the level of abstraction so that you do not have to manage the infrastructure details that are related to concurrency. Ее также можно использовать для указания политик планирования, соответствующих требованиям качества обслуживания приложений.You can also use it to specify scheduling policies that meet the quality of service demands of your applications. Эти ресурсы помогут вам начать работу с исполняющей средой с параллелизмом.Use these resources to help you start working with the Concurrency Runtime.

Справочную документацию см. в справочнике.For reference documentation, see Reference.

Совет

Исполняющая среда с параллелизмом интенсивно использует возможности C++11 и соответствует более современному стилю программирования на C++.The Concurrency Runtime relies heavily on C++11 features and adopts the more modern C++ style. Дополнительные сведения см. в статье Добро пожаловать в C++.To learn more, read Welcome Back to C++.

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

СтатьяArticle ОписаниеDescription
ОбзорOverview Объясняет, почему важна среда выполнения с параллелизмом и описывает ее основные компоненты.Teaches why the Concurrency Runtime is important and describes its key features.
Сравнение с другими моделями параллелизмаComparing to Other Concurrency Models Показывает характеристики среды выполнения с параллелизмом в сравнении с другими моделями параллелизма, например пулом потоков Windows и OpenMP, чтобы использовать ту модель параллелизма, которая лучше всего соответствует требованиям приложения.Shows how the Concurrency Runtime compares to other concurrency models, such as the Windows thread pool and OpenMP, so that you can use the concurrency model that best fits your application requirements.
Переход от OpenMP к среде выполнения с параллелизмомMigrating from OpenMP to the Concurrency Runtime Здесь OpenMP сравнивается с исполняющей средой с параллелизмом, и предоставляются примеры способов миграции существующего кода OpenMP для использования исполняющей среды с параллелизмом.Compares OpenMP to the Concurrency Runtime and provides examples about how to migrate existing OpenMP code to use the Concurrency Runtime.
Библиотека параллельных шаблоновParallel Patterns Library (PPL) Здесь представлены общие сведения о работе с PPL, предоставляющей параллельные циклы, задачи и контейнеры.Introduces you to the PPL, which provides parallel loops, tasks, and parallel containers.
библиотеку асинхронных агентовAsynchronous Agents Library Здесь приводятся способы использования асинхронных агентов и функций передачи сообщений, позволяющих встроить в приложения потоки данных и обеспечить конвейерную обработку задач.Introduces you to how to use asynchronous agents and message passing to easily incorporate dataflow and pipelining tasks in your applications.
Планировщик заданийTask Scheduler Содержит описание планировщика задач, который позволяет точно настроить производительность ваших приложений для настольных систем, использующих исполняющую среду с параллелизмом.Introduces you to the Task Scheduler, which enables you to fine-tune the performance of your desktop apps that uses the Concurrency Runtime.

Параллелизм задач в PPLTask Parallelism in the PPL

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

Как использовать parallel_invoke для написания параллельной подпрограммы сортировкиHow to: Use parallel_invoke to Write a Parallel Sort Routine

Инструкции. Использование parallel_invoke для выполнения параллельных операцийHow to: Use parallel_invoke to Execute Parallel Operations

Как создать задачу, которая завершается после задержкиHow to: Create a Task that Completes After a Delay
Содержит описание задач и групп задач, которые могут помочь в создании асинхронного кода и декомпозиции параллельной работы на меньшие части.Describes tasks and task groups, which can help you to write asynchronous code and decompose parallel work into smaller pieces.
Пошаговое руководство. Реализация фьючерсовWalkthrough: Implementing Futures Здесь показано, как объединить возможности исполняющей среды с параллелизмом для выполнения более объемной задачи.Demonstrates how to combine Concurrency Runtime features to do something more.
Пошаговое руководство. Удаление работы из потока User-InterfaceWalkthrough: Removing Work from a User-Interface Thread Здесь показано, как переместить работу, выполняемую потоком ИП, в рабочий поток в приложении MFC.Shows how to move the work that is performed by the UI thread in a MFC application to a worker thread.
Рекомендации в библиотеке параллельных шаблоновBest Practices in the Parallel Patterns Library

Общие рекомендации в среда выполнения с параллелизмомGeneral Best Practices in the Concurrency Runtime
Рекомендации по работе с PPL.Provides tips and best practices for working with the PPL.

Параллелизм данных в PPLData Parallelism in the PPL

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

Руководство. Написание цикла parallel_forHow to: Write a parallel_for Loop

Руководство. Написание цикла parallel_for_eachHow to: Write a parallel_for_each Loop

Как выполнять операции Map и reduce в параллельном режимеHow to: Perform Map and Reduce Operations in Parallel
Здесь приводится описание parallel_for, parallel_for_each, parallel_invokeи других параллельных алгоритмов.Describes parallel_for, parallel_for_each, parallel_invoke, and other parallel algorithms. Используйте параллельные алгоритмы для решения задач параллельных данных , включающих коллекции данных.Use parallel algorithms to solve data parallel problems that involve collections of data.
Параллельные контейнеры и объектыParallel Containers and Objects

Как использовать параллельные контейнеры для повышения эффективностиHow to: Use Parallel Containers to Increase Efficiency

Как использовать комбинирование для повышения производительностиHow to: Use combinable to Improve Performance

Как использовать комбинирование для объединения наборовHow to: Use combinable to Combine Sets
Здесь приводится описание классов combinable , concurrent_vector, concurrent_queue, concurrent_unordered_mapи других параллельных контейнеров.Describes the combinable class, as well as concurrent_vector, concurrent_queue, concurrent_unordered_map, and other parallel containers. Используйте параллельные контейнеры и объекты, когда требуются контейнеры, предоставляющие потокобезопасный доступ к своим элементам.Use parallel containers and objects when you require containers that provide thread-safe access to their elements.
Рекомендации в библиотеке параллельных шаблоновBest Practices in the Parallel Patterns Library

Общие рекомендации в среда выполнения с параллелизмомGeneral Best Practices in the Concurrency Runtime
Рекомендации по работе с PPL.Provides tips and best practices for working with the PPL.

Отмена задач и параллельных алгоритмовCanceling Tasks and Parallel Algorithms

СтатьяArticle ОписаниеDescription
Отмена в библиотеке параллельных шаблоновCancellation in the PPL Здесь описывается роль отмены в PPL, включая способы создания запросов отмены и реагирования на них.Describes the role of cancellation in the PPL, including how to initiate and respond to cancellation requests.
Как прервать выполнение из параллельного цикла с помощью отменыHow to: Use Cancellation to Break from a Parallel Loop

Как использовать обработку исключений для разрыва из параллельного циклаHow to: Use Exception Handling to Break from a Parallel Loop
Здесь демонстрируются два способа отмены работы с параллельными данными.Demonstrates two ways to cancel data-parallel work.

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

СтатьяArticle ОписаниеDescription
Создание асинхронных операций в C++ для приложений UWPCreating Asynchronous Operations in C++ for UWP Apps Описывает некоторые ключевые моменты, которые следует учитывать при использовании среда выполнения с параллелизмом для создания асинхронных операций в приложении UWP.Describes some of the key points to keep in mind when you use the Concurrency Runtime to produce asynchronous operations in a UWP app.
Пошаговое руководство. подключение с помощью задач и HTTP-запросов XMLWalkthrough: Connecting Using Tasks and XML HTTP Requests Показывает, как объединять задачи PPL с IXMLHTTPRequest2 IXMLHTTPRequest2Callback интерфейсами и для отправки запросов HTTP GET и POST к веб-службе в приложении UWP.Shows how to combine PPL tasks with the IXMLHTTPRequest2 and IXMLHTTPRequest2Callback interfaces to send HTTP GET and POST requests to a web service in a UWP app.
Примеры приложений среда выполнения WindowsWindows Runtime app samples Содержит загружаемые примеры кода и демонстрационные приложения для среда выполнения Windows.Contains downloadable code samples and demo apps for Windows Runtime.

Программирование потоков данных в библиотеке асинхронных агентовDataflow Programming in the Asynchronous Agents Library

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

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

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

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

Руководство. предоставление рабочих функций классам Call и transformerHow to: Provide Work Functions to the call and transformer Classes

Как использовать преобразователь в конвейере данныхHow to: Use transformer in a Data Pipeline

Практические руководства. Выбор между завершенными задачамиHow to: Select Among Completed Tasks

Как отправить сообщение с постоянным интерваломHow to: Send a Message at a Regular Interval

Как использовать фильтр блоков сообщенийHow to: Use a Message Block Filter
Здесь описываются асинхронные агенты, блоки сообщений и функции передачи сообщений, которые являются стандартными сборочными блоками для выполнения операций с потоками данных в исполняющей среде с параллелизмом.Describes asynchronous agents, message blocks, and message-passing functions, which are the building blocks for performing dataflow operations in the Concurrency Runtime.
Пошаговое руководство. Создание приложения Agent-BasedWalkthrough: Creating an Agent-Based Application

Пошаговое руководство. Создание агента потока данныхWalkthrough: Creating a Dataflow Agent
Здесь демонстрируется создание простого приложения на основе агентов.Shows how to create basic agent-based applications.
Пошаговое руководство. Создание Image-Processing сетиWalkthrough: Creating an Image-Processing Network Здесь показано, как создавать сеть асинхронных блоков сообщений, выполняющих обработку изображений.Shows how to create a network of asynchronous message blocks that perform image processing.
Пошаговое руководство. использование Join для предотвращения взаимоблокировокWalkthrough: Using join to Prevent Deadlock На примере проблемы обедающих философов показано использование исполняющей среды с параллелизмом для недопущения взаимоблокировок в приложении.Uses the dining philosophers problem to illustrate how to use the Concurrency Runtime to prevent deadlock in your application.
Пошаговое руководство. Создание пользовательского блока сообщенийWalkthrough: Creating a Custom Message Block Здесь описано, как создать пользовательский тип блока сообщений, сортирующий входящие сообщения по приоритету.Shows how to create a custom message block type that orders incoming messages by priority.
Рекомендации в библиотеке асинхронных агентовBest Practices in the Asynchronous Agents Library

Общие рекомендации в среда выполнения с параллелизмомGeneral Best Practices in the Concurrency Runtime
Рекомендации по работе с агентами.Provides tips and best practices for working with agents.

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

СтатьяArticle ОписаниеDescription
Обработка исключенийException Handling Здесь описана работа с исключениями в среде выполнения с параллелизмом.Describes how to work with exceptions in the Concurrency Runtime.
Средства диагностики параллельного выполненияParallel Diagnostic Tools Описывает способы оптимизации приложений и наиболее эффективного использования среды выполнения с параллелизмом.Teaches you how to fine-tune your applications and make the most effective use of the Concurrency Runtime.

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

СтатьяArticle ОписаниеDescription
Средства диагностики параллельного выполненияParallel Diagnostic Tools Описывает способы оптимизации приложений и наиболее эффективного использования среды выполнения с параллелизмом.Teaches you how to fine-tune your applications and make the most effective use of the Concurrency Runtime.
Экземпляры планировщикаScheduler Instances

Руководство. Управление экземпляром планировщикаHow to: Manage a Scheduler Instance

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

Как указать конкретные политики планировщикаHow to: Specify Specific Scheduler Policies

Как создавать агенты, использующие определенные политики планировщикаHow to: Create Agents that Use Specific Scheduler Policies
Здесь показаны способы управления экземплярами планировщиков и политиками планировщика.Shows how to work with manage scheduler instances and scheduler policies. В классических приложениях политики планировщика позволяют связывать определенные правила с определенными типами рабочих нагрузок.For desktop apps, scheduler policies enable you to associate specific rules with specific types of workloads. Например, можно создать один экземпляр планировщика для выполнения некоторых задач с повышенным приоритетом потока и использовать планировщик по умолчанию для выполнения задач с обычным приоритетом потока.For example, you can create one scheduler instance to run some tasks at an elevated thread priority and use the default scheduler to run other tasks at the normal thread priority.
Планирование группSchedule Groups

Как использовать группы расписаний для влияния на порядок выполненияHow to: Use Schedule Groups to Influence Order of Execution
Демонстрирует использование групп планирования для группировки связанных задач.Demonstrates how to use schedule groups to affinitize, or group, related tasks together. Например, вам может потребоваться высокая локальность связанных задач, если эти задачи лучше выполнять в одном узле процессора.For example, you might require a high degree of locality among related tasks when those tasks benefit from executing on the same processor node.
Упрощенные задачиLightweight Tasks Здесь описывается полезность легковесных задач при создании работы, которая не требует распределения нагрузки или отмены, и как они также могут использоваться для адаптации существующего кода для использования с исполняющей средой с параллелизмом.Explains how lightweight tasks are useful for creating work that does not require load-balancing or cancellation, and how they are also useful for adapting existing code for use with the Concurrency Runtime.
КонтекстыContexts

Как использовать класс контекста для реализации параллельного семафораHow to: Use the Context Class to Implement a Cooperative Semaphore

Как использовать превышение лимита подписки для смещения задержкиHow to: Use Oversubscription to Offset Latency
Здесь приводятся способы управления поведением потоков, управляемых исполняющей средой с параллелизмом.Describes how to control the behavior of the threads that are managed by the Concurrency Runtime.
Функции управления памятьюMemory Management Functions

Как использовать Alloc и Free для повышения производительности памятиHow to: Use Alloc and Free to Improve Memory Performance
Здесь описываются функции управления памятью, предоставляемые исполняющей средой с параллелизмом для параллельного выделения и высвобождения памяти.Describes the memory management functions that the Concurrency Runtime provides to help you allocate and free memory in a concurrent manner.

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

СтатьяArticle ОписаниеDescription
Шаблоны асинхронного программирования и советы по Hilo (приложения Магазина Windows на C++ и XAML)Async programming patterns and tips in Hilo (Windows Store apps using C++ and XAML) Узнайте, как мы использовали среда выполнения с параллелизмом для реализации асинхронных операций в Hilo, среда выполнения Windows приложении с использованием C++ и XAML.Learn how we used the Concurrency Runtime to implement asynchronous operations in Hilo, a Windows Runtime app using C++ and XAML.
Блог Parallel Programming in Native CodeParallel Programming in Native Code blog Содержит дополнительные подробные статьи о параллельном программировании в среде выполнения с параллелизмом.Provides additional in-depth blog articles about parallel programming in the Concurrency Runtime.
Форум Parallel Computing in C++ and Native CodeParallel Computing in C++ and Native Code forum Позволяет участвовать в обсуждениях сообщества о среде выполнения с параллелизмом.Enables you to participate in community discussions about the Concurrency Runtime.
Параллельное программированиеParallel Programming Учебник по модели параллельного программирования, доступной в .NET Framework.Teaches you about the parallel programming model that is available in the .NET Framework.

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

СсылкиReference