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


Класс task_group

Класс task_group представляет коллекцию параллельные работы которые могут подождать или быть отменена.

class task_group;

Члены

Открытые конструкторы

Имя

Описание

Конструктор task_group::task_group

Создает новый объект task_group.

Деструктор task_group::~task_group

Удаляет объект task_group. Ожидается вызов метода wait или run_and_wait на объект до выполнения деструктора, если деструктор не выполняется в результате очистки стека из-за исключения.

Открытые методы

Имя

Описание

Метод task_group::cancel

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

Метод task_group::is_canceling

Сообщает вызывающей стороне, находится ли группа задач в данный момент в состоянии отмены. Это не обязательно означает, что метод cancel был вызван на объект task_group (хотя это определенно позволяет этому метод вернуть true). Может быть,что объект task_group выполняется встроено и группа задач выше в дереве работы была отменена. В подобных случаях там, где среда выполнения может заранее определить, что отмена будет передаваться через этот объект task_group, будет возвращено значение true.

Метод task_group::run

Перегружен. Назначает задание на объекте task_group. Если объект task_handle передается как параметр в run, вызывающий объект отвечает за управление временем жизни объекта task_handle. Версия метода, который принимает ссылку на объект функции как параметр, включает выделение кучи внутри среды выполнения, которая может работать меньше хорошо, чем при использовании версии, который принимает ссылку на объект task_handle.

Метод task_group::run_and_wait

Перегружен. Планирует задачу для выполнения встроено в вызывающий контекст с помощью объекта task_group для поддержки полной отмены. Функция затем ожидает до тех пор, пока вся работа объекта task_group будет завершена или отменена. Если объект task_handle передается как параметр в run_and_wait, вызывающий объект отвечает за управление временем жизни объекта task_handle.

Метод task_group::wait

Ожидает до тех пор, пока вся работа над объектом task_group не завершена или отменена.

Заметки

В отличие от сильно ограниченного класса structured_task_group, класс task_group является гораздо более общей конструкцией. Он не имеет любые ограничения, описанные structured_task_group. Объекты task_group могут безопасно использоваться между потоками и использоваться способами произвольными. Недостаток конструкции task_group — она может работать не так хорошо, как конструкция structured_task_group, для задач, выполняющих небольшие объемы работы.

Дополнительные сведения см. в разделе Параллелизм задач (среда выполнения с параллелизмом).

Иерархия наследования

task_group

Требования

Заголовок: ppl.h

Пространство имен: Concurrency

См. также

Ссылки

Пространство имен Concurrency

Класс structured_task_group

Класс task_handle