task_group::run, méthode

Planifie une tâche sur l'objet task_group.Si un objet task_handle est passé comme paramètre à run, l'appelant est responsable de la gestion de la durée de vie de l'objet task_handle.La version de la méthode qui prend comme paramètre une référence à un objet de fonction implique l'allocation de tas à l'intérieur du runtime, ce qui peut donner de moins bons résultats que l'utilisation de la version qui prend comme paramètre une référence à un objet task_handle.La version qui prend le paramètre _Placement provoque la tâche d'être polarisé vers accéder à l'emplacement spécifié par ce paramètre.

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
);

Paramètres

  • _Function
    Type de l'objet de fonction qui sera appelé pour exécuter le corps du handle de tâche.

  • _Func
    Fonction qui sera appelée pour appeler le corps de la tâche.Il peut s'agir d'une expression lambda ou d'autre objet qui prend en charge une version de l'opérateur d'appel de fonction avec la signature void operator()().

  • _Placement
    Une référence à l'emplacement où la tâche représentée par le paramètre d' _Func doit exécuter.

  • _Task_handle
    Handle au travail qui est planifié.Notez que l'appelant est responsable de la durée de vie de cet objet.Le runtime continuera à attendre qu'il vive jusqu'à ce que la méthode wait ou run_and_wait a été appelée sur cet objet task_group.

Notes

Le runtime planifie la fonction de travail fournie pour s'exécuter ultérieurement, qui peut être après le retour de l'appel de la fonction.Cette méthode utilise un objet task_handle (page éventuellement en anglais) pour conserver une copie de la fonction de travail fournie.Par conséquent, aucune modification d'état se produisant dans un objet de fonction que vous passez à cette méthode ne s'affichera dans votre copie de cet objet de fonction.Vérifiez également que la durée de vie de tous les objets que vous passez par le pointeur ou par référence à la fonction de travail restent valides jusqu'au retour de la fonction de travail.

Si la destruction de task_group résulte d'un déroulement de pile provenant d'une exception, vous n'avez pas besoin de vous assurer qu'un appel a été passé à la méthode wait ou run_and_wait.Dans ce cas, le destructeur annulera et attendra que la tâche représentée par le paramètre _Task_handle se termine.

La méthode lève une exception invalid_multiple_scheduling si le handle de tâche donné par le paramètre _Task_handle a déjà été planifié sur un objet groupe de tâches via la méthode run et qu'aucun appel à la méthode wait ou run_and_wait n'est intervenu sur ce groupe de tâches.

Configuration requise

En-tête : ppl.h

Accès concurrentiel del'espace de noms :

Voir aussi

Référence

task_group, classe

task_group::wait, méthode

task_group::run_and_wait, méthode

location, classe

Concepts

Parallélisme des tâches (runtime d'accès concurrentiel)