std::experimental::when_all
| Definiert im Header <experimental/future> |
||
| template< class InputIt > auto when_all( InputIt first, InputIt last ) |
(1) | (Concurrency TS) |
| template< class... Futures > auto when_all( Futures&&... futures ) |
(2) | (Concurrency TS) |
Erzeugt ein future-Objekt, das bereit wird, wenn alle der eingegebenen futures und shared_futures bereit werden. Das Verhalten ist undefiniert, wenn irgendein eingegebenes future oder shared_future ungültig ist.
Sei insbesondere Sequence ein std::vector<typename std::iterator_traits<InputIt>::value_type> für (1) und ein std::tuple<std::decay_t<Futures>...> für (2). Diese Funktion-Template erstellt einen Shared State, der Sequence enthält, und gibt ein Future zurück, das auf den Shared State verweist. Jedes eingegebene future wird in das entsprechende Objekt in der Sequence im Shared State verschoben, und jedes eingegebene shared_future wird in das entsprechende Objekt in der Sequence im Shared State kopiert. Die Reihenfolge der Objekte in der Sequence entspricht der Reihenfolge der Argumente.
InputIt (d.h. typename std::iterator_traits<InputIt>::value_type) ist ein std::experimental::future oder std::experimental::shared_future.Fn in Futures ist entweder std::remove_reference_t<Fn> ein std::experimental::future<Rn> oder std::decay_t<Fn> ist ein std::experimental::shared_future<Rn>.)Nach diesem Aufruf ist jedes eingegebene future nicht mehr gültig; jedes eingegebene shared_future bleibt gültig.
[bearbeiten] Rückgabewert
Ein future, das auf den durch den Aufruf erzeugten Shared State verweist. Das Future ist immer gültig() und wird bereit, wenn alle eingegebenen futures und shared_futures des Aufrufs bereit sind.
future einen leeren Vektor und ist sofort bereit.future<std::tuple<>> zurückgegeben und ist sofort bereit.