Sdílet prostřednictvím


when_all – funkce

Vytvoří úlohu, která bude dokončena úspěšně, pokud budou všechny úlohy uvedené jako argumenty úspěšně dokončeny.

template <
   typename _Iterator
>
auto when_all(
   _Iterator_Begin,
   _Iterator_End,
   const task_options& _TaskOptions = task_options()
) -> decltype (details::_WhenAllImpl<typename std::iterator_traits<_Iterator>::value_type::result_type, _Iterator>::_Perform(_TaskOptions, _Begin, _End));

Parametry

  • _Iterator
    Typ vstupního iterátoru.

  • _Begin
    Pozice prvního prvku v rozsahu prvků se zkombinuje do výsledného úkolu.

  • _End
    Pozice prvního prvku mimo rozsah prvků se zkombinuje do výsledného úkolu.

  • _TaskOptions

Vrácená hodnota

Úkol, který se úspěšně dokončí, když všechny vstupní úkoly proběhnou úspěšně.Pokud jsou vstupní úlohy typu T, výstup této funkce bude task<std::vector<T>>.Pokud jsou vstupní úlohy typu void, výstupní úloha bude také task<void>.

Poznámky

when_all je neblokující funkce, která vytváří task jako výsledek.Na rozdíl od úlohy task::wait je bezpečné volat tuto funkci v aplikaci Windows Store vlákna ASTA (Application STA).

Je-li jeden z úkolů zrušen nebo vyvolá výjimku, vrácené úlohy budou dokončeny včas ve zrušeném stavu a při volání task::get nebo task::wait pro tento úkol bude vyvolána výjimka (jestliže k ní došlo).

Další informace naleznete v tématu Funkční paralelismus (Concurrency Runtime).

Požadavky

Záhlaví: ppltasks.h

Obor názvů: souběžnost

Viz také

Referenční dokumentace

concurrency – obor názvů

Koncepty

Funkční paralelismus (Concurrency Runtime)