std::experimental::when_any
| Definiert im Header <experimental/future> |
||
| template< class Sequence > struct when_any_result { |
(Concurrency TS) | |
| template< class InputIt > auto when_any( InputIt first, InputIt last ) |
(1) | (Concurrency TS) |
| template< class... Futures > auto when_any( Futures&&... futures ) |
(2) | (Concurrency TS) |
Erzeugt ein future-Objekt, das bereit wird, sobald mindestens eines der eingegebenen futures und shared_futures bereit ist. Das Verhalten ist undefiniert, wenn ein eingegebenes future oder shared_future ungültig ist.
Insbesondere sei Sequence ein std::vector<typename std::iterator_traits<InputIt>::value_type> für (1) und std::tuple<std::decay_t<Futures>...> für (2). Diese Funktion-Template erstellt einen gemeinsamen Zustand, der when_any_result<Sequence> enthält, und gibt ein Future zurück, das auf den gemeinsamen Zustand verweist. Jedes eingegebene future wird in das entsprechende Objekt im futures-Member von when_any_result<Sequence> im gemeinsamen Zustand verschoben, und jedes eingegebene shared_future wird in das entsprechende Objekt im futures-Member von when_any_result<Sequence> im gemeinsamen Zustand 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, dass entweder std::remove_reference_t<Fn> ein std::experimental::future<Rn> ist oder std::decay_t<Fn> ein std::experimental::shared_future<Rn> ist.)Nach diesem Aufruf sind alle eingegebenen futures ungültig; alle eingegebenen shared_futures bleiben gültig.
[bearbeiten] Rückgabewert
Ein future, das auf den durch den Aufruf erstellten gemeinsamen Zustand verweist. Das Future ist immer valid() und wird bereit, sobald mindestens eines der eingegebenen futures und shared_futures des Aufrufs bereit ist. Das index-Mitglied von when_any_result enthält die Position des bereiten future oder shared_future im futures-Mitglied.
future sofort bereit; das futures-Feld von when_any_result ist ein leerer Vektor und das index-Feld ist size_t(-1).future sofort bereit; das futures-Feld von when_any_result ist ein leeres Tuple und das index-Feld ist size_t(-1).