Compartir a través de


task_group::run (Método)

Programa una tarea en el objeto task_group. Si un objeto task_handle se pasa como un parámetro a run, el llamador es responsable de administrar la duración del objeto task_handle. La versión del método que toma una referencia a un objeto de función como un parámetro implica la asignación del montón dentro del runtime que se puede realizar con menos rendimiento que el uso de la versión que toma una referencia a un objeto task_handle. La versión que toma el parámetro _Placement hace que la tarea se perjudicado para ejecutarse en la ubicación especificada por ese parámetro.

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

template<
   typename _Function
>
void run(
   const _Function& _Func,
   location& _Placement
);

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

template<
   typename _Function
>
void run(
   task_handle<_Function>& _Task_handle,
   location& _Placement
);

Parámetros

  • _Function
    El tipo del objeto de función que se invocará para ejecutar el cuerpo del identificador de tareas.

  • _Func
    Una función a la que se llamará para invocar el cuerpo de la tarea. Éste puede ser una expresión lambda u otro objeto que admita una versión del operador de llamada de función con la firma void operator()().

  • _Placement
    Una referencia a la ubicación donde la tarea representada por el parámetro de _Func debe ejecutarse.

  • _Task_handle
    Un identificador del trabajo que se está programando. Tenga en cuenta que el llamador tiene la responsabilidad de la duración de este objeto. El runtime o continuará esperando que se encuentre activo hasta que se llame al método wait o run_and_wait en este objeto task_group.

Comentarios

El motor en tiempo de ejecución programa la función de trabajo proporcionada para que se ejecute más adelante, por ejemplo, una vez que se devuelva la función de llamada. Este método usa un objeto task_handle para guardar una copia de la función de trabajo especificada. Por consiguiente, los cambios de estado que se produzcan en el objeto de función pasado a este método no aparecerán en su copia de dicho objeto de función. Además, asegúrese de que la duración de los objetos que se pasen por puntero o referencia a la función de trabajo no haya vencido hasta que vuelva la función de trabajo.

Si task_group se destruye como resultado del "desenredo" de la pila de una excepción, no necesita garantizar que una llamada se ha realizado al método run_and_wait o wait. En este caso, el destructor se cancelará apropiadamente y esperará a que la tarea representada por el parámetro _Task_handle se complete.

El método produce una excepción invalid_multiple_scheduling si el identificador de tareas proporcionado por el parámetro _Task_handle ya se ha programado hacia un objeto de grupo de tareas a través del método run y no hay ninguna llamada que se interponga al método run_and_wait o wait en ese grupo de tareas.

Requisitos

Encabezado: ppl.h

Espacio de nombres: simultaneidad

Vea también

Referencia

task_group (Clase)

task_group::wait (Método)

task_group::run_and_wait (Método)

location (Clase)

Conceptos

Paralelismo de tareas (Runtime de simultaneidad)