Para ver el artículo en inglés, active la casilla Inglés. También puede ver el texto en inglés en una ventana emergente si pasa el puntero del mouse por el texto.
Traducción
Inglés
Se recomienda usar Visual Studio 2017

async (Función)

 

Representa un proveedor asincrónico.

template<class Fn, class... ArgTypes>
   future<typename result_of<Fn(ArgTypes...)>::type>;
      async(Fn&& fn, ArgTypes&&... args);
template<class Fn, class... ArgTypes>
   future<typename result_of<Fn(ArgTypes...)>::type>;
      async(launch policy, Fn&& fn, ArgTypes&&... args);

policy

Valor launch.

Definiciones de las abreviaturas:

dfn

Resultado de llamar a decay_copy(forward<Fn>(fn)).

dargs

Resultado de las llamadas decay_copy(forward<ArgsTypes>(args…)).

Ty

El tipo result_of<Fn(ArgTypes…)>::type.

La primera función de plantilla devuelve async(launch::any, fn, args…).

La segunda función devuelve un objeto future<Ty> cuyo estado asincrónico asociado contiene un resultado junto con los valores de dfn y dargs y un objeto de subproceso para administrar un subproceso de ejecución independiente.

A menos que decay<Fn>::type sea un tipo distinto de launch, la segunda función no participa en la resolución de sobrecarga.

Si policy es launch::any, la función puede elegir launch::async o launch::deferred.  En esta implementación, la función utiliza launch::async.  

Si policy es launch::async, la función crea un subproceso que evalúa INVOKE(dfn, dargs..., Ty).  La función vuelve después de crear el subproceso sin esperar los resultados.  Si el sistema no puede iniciar un nuevo subproceso, la función produce un system_error que tiene un código de error de resource_unavailable_try_again.  

Si policy es launch::deferred, la función marca su estado asincrónico asociado como que contiene una función aplazada y vuelve.  La primera llamada a cualquier función no cronometrada que espera hasta que el estado asincrónico asociado esté listo llama a la función aplazada evaluando INVOKE(dfn, dargs..., Ty).  

En todos los casos, el estado asincrónico asociado del objeto future no se establece en listo hasta que la evaluación de INVOKE(dfn, dargs…, Ty) no se completa, ya sea iniciando una excepción o volviendo normalmente.  El resultado del estado asincrónico asociado es una excepción si se produjo alguna, o cualquier valor devuelto por la evaluación.  

System_CAPS_noteNota

Para un future o el último shared_future adjunto a una tarea iniciada con std::async, el destructor se bloquea si la tarea no se ha completado; es decir, se bloquea si este subproceso aún no ha llamado a .get() o .wait() y la tarea todavía se está ejecutando.  Si un future obtenido de std::async se desplaza fuera del ámbito local, otro código que lo utilice debe saber que su destructor se puede bloquear para que el estado compartido se convierta en listo.  

La pseudofunción INVOKE se define en <functional>.

Requisitos

Encabezado: future

Espacio de nombres: std

Mostrar: