Share via


task_group::run_and_wait-Methode

Plant eine Aufgabe, die mithilfe des task_group-Objekts für vollständige Abbruchunterstützung inline auf dem aufrufenden Kontext ausgeführt werden soll. Die Funktion wartet dann, bis die gesamte Arbeit des task_group-Objekts abgeschlossen oder abgebrochen wurde. Wenn ein task_handle-Objekt als Parameter an run_and_wait übergeben wird, ist der Aufrufer verantwortlich dafür, die Lebensdauer des task_handle-Objekts zu verwalten.

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

Parameter

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

  • _Task_handle
    Ein Handle für die Aufgabe, das inline auf dem aufrufenden Kontext ausgeführt 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 run_and_wait-Methode die Ausführung beendet.

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

Rückgabewert

Ein Anzeichen dafür, ob der Wartevorgang erfüllt wurde oder die Aufgabengruppe abgebrochen wurde, aufgrund eines expliziten Abbruchvorgangs oder einer Ausnahme, die von einer der zugehörigen Aufgaben ausgelöst wurde. Weitere Informationen finden Sie unter task_group_status.

Hinweise

Beachten Sie, dass ein oder mehrere für dieses task_group-Objekt geplante Aufgaben möglicherweise inline auf dem aufrufenden Kontext ausgeführt werden.

Wenn eine oder mehrere der Aufgaben, die für dieses task_group-Objekt geplant wurden, eine Ausnahme auslösen, wählt die Laufzeit nach eigenem Ermessen eine dieser Ausnahmen aus und gibt sie aus dem Aufruf weiter an die run_and_wait-Methode.

Nach Beenden der run_and_wait-Methode für ein task_group-Objekt setzt die Laufzeit das Objekt auf einen sauberen Zustand zurück, in dem es wiederverwendet werden kann. Dies schließt den Fall ein, dass das task_group-Objekt abgebrochen wurde.

Im Nicht-Ausnahmepfad der Ausführung haben Sie die Pflicht, entweder diese Methode oder die wait-Methode aufzurufen, bevor der Destruktor von task_group ausgeführt wird.

Anforderungen

Header: ppl.h

Namespace: Concurrency

Siehe auch

Referenz

task_group-Klasse

task_group::run-Methode

task_group::wait-Methode

Konzepte

Aufgabenparallelität (Concurrency Runtime)