Sdílet prostřednictvím


Metoda task_group::Run

Naplánuje úkol task_group objektu.Pokud task_handle objekt je předán jako parametr run, volající je zodpovědná za správu platnosti task_handle objektu.Verze metody, která má odkaz na objekt funkci jako parametr zahrnuje přidělení haldy uvnitř runtime, který může být provádět méně dobře než verze, která přebírá odkaz na task_handle objektu.Verze, která přebírá parametr _Placement úlohu se s předpětím směrem k provádění v umístění určeném tímto parametrem.

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

Parametry

  • _Function
    Typ objektu funkce, která bude vyvolána subjekt popisovač úkol provést.

  • _Func
    Funkce nazývaný vyvolat těla úkolu.To může být lambda výraz nebo jiného objektu, který podporuje verzi operátor volání funkce s podpisem void operator()().

  • _Placement
    Odkaz na umístění, kde představuje úkol _Func parametr spustit.

  • _Task_handle
    Popisovač naplánované práce.Všimněte si, že volající má odpovědnost za dobu životnosti tohoto objektu.Modul runtime bude nadále očekávat, že dokud buď live wait nebo run_and_wait byla volána metoda v této task_group objektu.

Poznámky

Modul runtime naplánuje poskytované pracovní funkce spustit později, což může být po volání funkce vrátí.Tato metoda používá task_handle objekt kopii poskytované pracovní funkce.Proto změny stavu, ke kterým dochází ve funkci objektu, který předat tuto metodu v kopii objektu funkce nezobrazí.Dále se ujistěte, že životnost všechny objekty, které projdou ukazatel nebo odkaz na funkci práce zůstává v platnosti, do práce vrátí.

Pokud task_group destructs jako výsledek příkazem výjimku ze zásobníku není nutné zaručit, že volání byla provedena buď wait nebo run_and_wait metoda.V tomto případě bude se objekt vhodně zrušit a počkejte úlohy zastoupen _Task_handle parametr dokončit.

Vyvolá metodu invalid_multiple_scheduling výjimku, pokud zpracování úlohy poskytují _Task_handle parametr již bylo naplánováno na objekt skupiny úkolů prostřednictvím run metoda a nebyla žádná požadovanými volání buď wait nebo run_and_wait metoda v této skupině úloh.

Požadavky

Záhlaví: ppl.h

Obor názvů: souběžnosti

Viz také

Referenční dokumentace

Třída task_group

Metoda task_group::wait

Metoda task_group::run_and_wait

umístění třídy

Koncepty

Úkol rovnoběžnosti (souběžnosti Runtime)