Планировщик задач (среда выполнения с параллелизмом)
Подразделы в этом разделе документации описывают важные возможности планировщика заданий исполняющей среды с параллелизмом. Планировщик задач полезен, если вы хотите точно настроить производительность существующего кода, использующего среду выполнения параллелизма.
Внимание
Планировщик задач недоступен из приложения универсальная платформа 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 . Эти функции могут улучшить производительность памяти путем выделения и освобождения памяти в параллельном режиме. |
Сравнение с другими моделями параллелизма | В этом разделе описываются различия между механизмами приоритетного планирования и координированного планирования. |
Библиотека параллельных шаблонов | В этом разделе описывается использование различных параллельных шаблонов, таких как параллельные алгоритмы, в ваших приложениях. |
Библиотека асинхронных агентов | В этом разделе описывается использование асинхронных агентов в ваших приложениях. |
Среда выполнения с параллелизмом | Описывает среду выполнения с параллелизмом, которая упрощает процесс параллельного программирования и содержит ссылки на соответствующие разделы. |