std::experimental:: when_all
|
Definido en el encabezado
<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) |
Cree un objeto
future
que esté listo cuando todas las
future
s y
shared_future
s de entrada estén listas. El comportamiento es indefinido si cualquier
future
o
shared_future
de entrada no es válido.
En particular, sea
Sequence
un
std::
vector
<
typename
std::
iterator_traits
<
InputIt
>
::
value_type
>
para
(1)
y
std::
tuple
<
std::
decay_t
<
Futures
>
...
>
para
(2)
. Esta plantilla de función crea un estado compartido que contiene
Sequence
y devuelve un futuro que hace referencia al estado compartido. Cada
future
de entrada se mueve al objeto correspondiente en la
Sequence
del estado compartido, y cada
shared_future
de entrada se copia al objeto correspondiente en la
Sequence
del estado compartido. El orden de los objetos en la
Sequence
coincide con el orden de los argumentos.
InputIt
's tipo de valor (es decir,
typename
std::
iterator_traits
<
InputIt
>
::
value_type
) sea un
std::experimental::future
o un
std::experimental::shared_future
.
Fn
en
Futures
, ya sea
std::
remove_reference_t
<
Fn
>
es
std::
experimental
::
future
<
Rn
>
, o
std::
decay_t
<
Fn
>
es
std::
experimental
::
shared_future
<
Rn
>
.)
Después de esta llamada, cada entrada
future
deja de ser válida; cada entrada
shared_future
permanece válida.
Valor de retorno
Un
future
que hace referencia al estado compartido creado por la llamada. El future siempre es
valid
(
)
, y se vuelve listo cuando todas las
future
s y
shared_future
s de entrada de la llamada están listas.
future
devuelto contiene un vector vacío y está listo inmediatamente.
future<std::tuple<>>
que está inmediatamente listo.