std::experimental:: when_any
|
Definido en el encabezado
<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) |
Cree un objeto
future
que esté listo cuando al menos una de las
future
s y
shared_future
s de entrada esté lista. 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
when_any_result<Sequence>
y devuelve un futuro que referencia al estado compartido. Cada
future
de entrada es movido al objeto correspondiente en el miembro
futures
del
when_any_result<Sequence>
en el estado compartido, y cada
shared_future
de entrada es copiado al objeto correspondiente en el miembro
futures
del
when_any_result<Sequence>
en el 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
std::experimental::shared_future
.
Fn
en
Futures
, o bien
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 al menos uno de los
future
s y
shared_future
s de entrada de la llamada está listo. El miembro
index
del
when_any_result
contiene la posición del
future
o
shared_future
listo en el miembro
futures
.
future
devuelto está listo inmediatamente; el campo
futures
del
when_any_result
es un vector vacío, y el campo
index
es
size_t
(
-
1
)
.
future
devuelto está listo inmediatamente; el campo
futures
del
when_any_result
es una tupla vacía, y el campo
index
es
size_t
(
-
1
)
.