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


Планировщик задач (среда выполнения с параллелизмом)

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

Внимание

Планировщик задач недоступен из приложения универсальная платформа Windows (UWP). Дополнительные сведения см. в статье "Создание асинхронных операций в C++ для приложений UWP".

В Visual Studio 2015 и более поздних версиях класс параллелизма::task и связанные типы в ppltasks.h используют Windows ThreadPool в качестве планировщика. Этот раздел больше не относится к типам, определенным в файле ppltasks.h. Параллельные алгоритмы, например parallel_for, продолжают по умолчанию использовать планировщик среды выполнения с параллелизмом.

Совет

Среда выполнения с параллелизмом предоставляет планировщик по умолчанию, и таким образом не требуется создавать планировщик в приложении. Так как планировщик задач помогает точно настроить производительность приложений, рекомендуется начать с библиотеки параллельных шаблонов (PPL) или библиотеки асинхронных агентов, если вы не знакомы со средой выполнения параллелизма.

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

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

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

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

Заголовок Description
Экземпляры планировщика В этом разделе описываются экземпляры планировщиков и использование классов concurrency::Scheduler и concurrency::CurrentScheduler для управления ими. Используйте экземпляры планировщика, когда требуется связать явные политики планирования с определенными типами рабочих нагрузок.
Политики планировщика В этом разделе описывается роль политик планировщика. Используйте политики планировщика, если нужно управлять стратегией, которую планировщик применяет при управлении задачами.
Группы планирования В этом разделе описывается роль групп расписаний. Используйте группы расписаний, когда требуется высокая степень локальности связанных задач, например если группу связанных задач лучше выполнять в одном узле процессора.
Упрощенные задачи В этом разделе описывается роль упрощенных задач. Упрощенные задачи полезны при адаптации существующего кода к использованию функциональных возможностей планирования среды выполнения с параллелизмом.
Контексты В этом разделе описывается роль контекстов, функция concurrency::wait и класс concurrency::Context. Используйте эту функциональность, если необходимо управлять блокированием, разблокированием и выдачей контекстов или если требуется разрешить превышение лимита в приложении.
Функции управления памятью В этом разделе описываются функции concurrency::Alloc и concurrency::Free. Эти функции могут улучшить производительность памяти путем выделения и освобождения памяти в параллельном режиме.
Сравнение с другими моделями параллелизма В этом разделе описываются различия между механизмами приоритетного планирования и координированного планирования.
Библиотека параллельных шаблонов В этом разделе описывается использование различных параллельных шаблонов, таких как параллельные алгоритмы, в ваших приложениях.
Библиотека асинхронных агентов В этом разделе описывается использование асинхронных агентов в ваших приложениях.
Среда выполнения с параллелизмом Описывает среду выполнения с параллелизмом, которая упрощает процесс параллельного программирования и содержит ссылки на соответствующие разделы.