Упрощенные задачи
В этом документе описывается роль упрощенных задач в среде выполнения с параллелизмом. Упрощенная задача — это задача, планируемая непосредственно в объекте concurrency::Scheduler или concurrency::ScheduleGroup. Упрощенная задача напоминает функцию, предоставляемую функции CreateThread Windows API. Следовательно, упрощенные задачи полезны при адаптации существующего кода к использованию функций планирования среды выполнения с параллелизмом. В среде выполнения с параллелизмом упрощенные задачи используются для планирования асинхронных агентов и отправки сообщений между асинхронными блоками сообщений.
Совет
Среда выполнения с параллелизмом предоставляет планировщик по умолчанию, поэтому вам не обязательно создавать собственный.Так как планировщик заданий помогает оптимизировать производительность приложений, рекомендуется начать с раздела Библиотека параллельных шаблонов или Библиотека асинхронных агентов, если вы не знакомы со средой выполнения с параллелизмом.
Упрощенные задачи дают меньшую нагрузку на систему, чем асинхронные агенты и группы задач. Например, среда выполнения не уведомляет о завершении упрощенной задачи. Кроме того, среда выполнения не перехватывает и не обрабатывает исключения, созданные в ходе выполнения упрощенной задачи. Дополнительные сведения об обработке исключений и упрощенных задачах см. в разделе Обработка исключений в среде выполнения с параллелизмом.
Для большинства задач рекомендуется использовать более надежные функции, такие как группы задач и параллельные алгоритмы, потому что они облегчают разложение сложных задач на более простые. Дополнительные сведения о группах задач см. в разделе Параллелизм задач (среда выполнения с параллелизмом). Дополнительные сведения об алгоритмах параллельной обработки см. в разделе Параллельные алгоритмы.
Чтобы создать упрощенную задачу, необходимо вызвать метод concurrency::ScheduleGroup::ScheduleTask, concurrency::CurrentScheduler::ScheduleTask или concurrency::Scheduler::ScheduleTask. Чтобы дождаться завершения упрощенной задачи, необходимо дождаться завершения работы родительского планировщика или использовать механизм синхронизации, такой как объект concurrency::event.
Пример
Пример, в котором показана адаптация существующего кода к использованию упрощенной задачи, см. в разделе Пошаговое руководство. Адаптация существующего кода для использования упрощенных задач.
См. также
Задачи
Пошаговое руководство. Адаптация существующего кода для использования упрощенных задач