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


Метод task_group::run_and_wait

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

template<
   class _Function
>
task_group_status run_and_wait(
   task_handle<_Function>& _Task_handle
);

template<
   class _Function
>
task_group_status run_and_wait(
   const _Function& _Func
);

Параметры

  • _Function
    Тип объекта функции, которая будет вызвана для выполнения основной части задачи.

  • _Task_handle
    Дескриптор задачи, которая будет выполняться встроено в контекст вызова. Обратите внимание, что вызывающая сторона несет ответственность все время жизни этого объекта. Среда выполнения будет продолжать ожидать, что он будет жить, до завершения выполнения метода run_and_wait.

  • _Func
    Функция, которая будет вызываться для вызова основного текста работы. Это может быть лямбда-выражение или другой объект, который поддерживает версию оператора вызова функции с сигнатурой void operator()().

Возвращаемое значение

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

Заметки

Обратите внимание, что один или несколько задач, запланированных на этот объект task_group, может выполняться встроено в контекст вызывающий.

Если один или несколько задач, назначенных данному объекту task_group, создают исключение, среда выполнения будет выбрать одно такое исключение и распространить из вызова методу run_and_wait.

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

В неисключительном пути выполнения имеется поручение вызывать этот метод или метод wait до выполнения деструктора task_group.

Требования

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

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

См. также

Ссылки

Класс task_group

Метод task_group::run

Метод task_group::wait

Основные понятия

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