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


Метод task_group::run

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

template<
   typename _Function
>
void run(
   const _Function& _Func
);
template<
   typename _Function
>
void run(
   task_handle<_Function>& _Task_handle
);

Параметры

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

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

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

Заметки

Среда выполнения составляет расписание для отсроченного запуска предоставленной рабочей функции, который может произойти после возврата вызывающей функции. Этот метод использует объект task_handle для хранения копии предоставленной рабочей функции. Следовательно, любые изменения, происходящие в объекте функции, передаваемом объекту , не отобразятся в пользовательской копии объекта функции. Кроме того, убедитесь, что время существования любых объектов, которые передаются с помощью указателя или ссылки в рабочую функцию, допустимы, пока рабочая функция не вернет результат.

Если task_group разрушается в результате очистки стека из-за исключения, необязательно гарантировать, что делается вызов к методу wait или run_and_wait. В этом случае деструктор будет соответствующим образом отменять и ждать, пока задача, представленная параметром _Task_handle, завершится.

Метод создает исключение invalid_multiple_scheduling, если дескриптор задачи, заданным параметром _Task_handle, уже запланирован на объект группы задач через метод run и не было промежуточных вызовов к методу wait или run_and_wait для этой группы задач.

Требования

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

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

См. также

Ссылки

Класс task_group

Метод task_group::wait

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

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

Другие ресурсы

Метод task_group::run_and_wait