Freigeben über


task_group::run-Methode

Plant eine Aufgabe für das task_group-Objekt. Wenn ein task_handle-Objekt als Parameter an run übergeben wird, ist der Aufrufer verantwortlich dafür, die Lebensdauer des task_handle-Objekts zu verwalten. Die Version der Methode, die einen Verweis auf ein Funktionsobjekt als Parameter akzeptiert, schließt Heapbelegung in der Laufzeit ein, was möglicherweise weniger gut als die Version funktioniert, die einen Verweis auf ein task_handle-Objekt akzeptiert.

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

Parameter

  • _Function
    Der Typ des Funktionsobjekts, das aufgerufen wird, um den Text des Aufgabenhandles auszuführen.

  • _Func
    Eine Funktion, die aufgerufen wird, um den Text der Aufgabe aufzurufen. Dies ist möglicherweise ein Lambda-Ausdruck oder anderes Objekt, das eine Version des Funktionsaufrufoperators mit der Signatur void operator()() unterstützt.

  • _Task_handle
    Ein Handle für die Arbeit, die geplant wird. Beachten Sie, dass der Aufrufer die Verantwortung für die Lebensdauer dieses Objekts hat. Die Laufzeit erwartet weiterhin, dass es aktiv ist, bis die wait-Methode oder run_and_wait-Methode für dieses task_group-Objekt aufgerufen wurde.

Hinweise

Die Runtime plant die bereitgestellte Arbeitsfunktion zur Ausführung zu einem späteren Zeitpunkt. Dies kann dann sein, wenn die aufrufende Funktion zurückgegeben wird. Diese Methode verwendet ein task_handle-Objekt, um eine Kopie der bereitgestellten Arbeitsfunktion enthalten zu können. Daher werden alle Zustandsänderungen, die in einem an diese Methode übergebenen Funktionsobjekt auftreten, nicht in der Kopie dieses Funktionsobjekts angezeigt. Stellen Sie darüber hinaus sicher, dass die Lebensdauer aller Objekte, die Sie per Zeiger oder Hinweis zur Arbeitsfunktion übergeben, gültig bleibt, bis die Arbeitsfunktion einen Wert zurückgibt.

Wenn task_group als Ergebnis der Stapelentladung aufgrund einer Ausnahme zerstört wird, müssen Sie nicht garantieren, dass die wait-Methode oder die run_and_wait-Methode aufgerufen wurde. In diesem Fall bricht der Destruktor korrekt ab und wartet auf den Abschluss der durch den _Task_handle-Parameter dargestellten Aufgabe.

Die Methode löst eine invalid_multiple_scheduling-Ausnahme aus, wenn das vom _Task_handle-Parameter angegebene Aufgabenhandle bereits für ein Aufgabengruppenobjekt über die run-Methode geplant wurde und es keinen zwischenzeitlichen Aufruf der wait-Methode oder der run_and_wait-Methode für diese Aufgabengruppe gab.

Anforderungen

Header: ppl.h

Namespace: Concurrency

Siehe auch

Referenz

task_group-Klasse

task_group::wait-Methode

Konzepte

Aufgabenparallelität (Concurrency Runtime)

Weitere Ressourcen

task_group::run_and_wait-Methode