Упрощенные задачи

 

Самая актуальная документация по Visual Studio 2017: Документация по Visual Studio 2017.

В этом документе описывается роль упрощенных задач в среде выполнения с параллелизмом. Упрощенная задача — это задача, планируемая непосредственно в объекте concurrency::Scheduler или concurrency::ScheduleGroup. Упрощенная задача напоминает функцию, предоставляемую функции CreateThread Windows API. Следовательно, упрощенные задачи полезны при адаптации существующего кода к использованию функций планирования среды выполнения с параллелизмом. В среде выполнения с параллелизмом упрощенные задачи используются для планирования асинхронных агентов и отправки сообщений между асинхронными блоками сообщений.

System_CAPS_ICON_tip.jpg Совет

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

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

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

Чтобы создать упрощенную задачу, необходимо вызвать метод concurrency::ScheduleGroup::ScheduleTask, concurrency::CurrentScheduler::ScheduleTask или concurrency::Scheduler::ScheduleTask. Чтобы дождаться завершения упрощенной задачи, необходимо дождаться завершения работы родительского планировщика или использовать механизм синхронизации, такой как объект concurrency::event.

Пример

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

См. также

Планировщик задач
Пошаговое руководство. Адаптация существующего кода для использования упрощенных задач