Compartir a través de


<future>

Incluya el encabezado estándar <future> para definir clases de plantilla y plantillas auxiliares que simplifican la ejecución de una función, posiblemente en un subproceso diferente, y la recuperación de su resultado. El resultado es el valor devuelto por la función o una excepción que la función emite pero que no se detecta en la función.

Este encabezado utiliza el runtime de simultaneidad (ConcRT) para que pueda utilizarlo junto con otros mecanismos de ConcRT. Para obtener más información sobre ConcRT, vea Runtime de simultaneidad.

#include <future>

Comentarios

Nota

En el código compilado mediante /clr o /clr:pure, este encabezado está bloqueado.

Un proveedor asincrónico almacena el resultado de una llamada de función. Se utiliza un objeto de devolución asincrónico para recuperar el resultado de una llamada de función. Un estado asincrónico asociado proporciona la comunicación entre un proveedor asincrónico y uno o más objetos de devolución asincrónicos.

Un programa no crea directamente ningún objeto con un estado asincrónico asociado. El programa crea un proveedor asincrónico cuando necesita uno y a partir de él crea un objeto de devolución asincrónico que comparte su estado asincrónico asociado con el proveedor. Los proveedores asincrónicos y los objetos de devolución asincrónicos administran los objetos que contienen su estado asincrónico asociado compartido. Cuando el último objeto que hace referencia al estado asincrónico asociado lo libera, se destruye el objeto que contiene el estado asincrónico asociado.

Un proveedor asincrónico o un objeto de devolución asincrónico que no tiene ningún estado asincrónico asociado está vacío.

Un estado asincrónico asociado está listo únicamente si su proveedor asincrónico ha almacenado un valor devuelto o ha almacenado una excepción.

La función de plantilla async y las clases de plantilla promise y packaged_task son proveedores asincrónicos. Las clases de plantilla future y shared_future describen objetos de devolución asincrónicos.

Cada una de las clases de plantilla promise, future y shared_future tiene una especialización para el tipo void y una especialización parcial para almacenar y recuperar un valor por referencia. Estas especializaciones solo difieren de la plantilla principal en las signaturas y la semántica de las funciones que almacenan y recuperan el valor devuelto.

Las clases de plantilla future y shared_future nunca se bloquean en sus destructores, excepto en un caso que se conserva por compatibilidad con versiones anteriores: a diferencia de todos los demás future, para un future (o para el último shared_future) que está 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 no ha llamado aún a .get() o .wait() y la tarea todavía se está ejecutando. Se ha agregado la siguiente nota de uso a la descripción de std::async en el borrador del estándar: "[Nota: si un future obtenido de std::async se desplaza fuera del ámbito local, otro código que utilice el future debe saber que el destructor del future puede bloquearse para que el estado compartido esté listo.—fin de la nota]" En todos los demás casos, los destructores de future y shared_future son necesarios y se garantiza que nunca se bloquean.

Miembros

Clases

Name

Descripción

future (Clase)

Describe un objeto de devolución asincrónico.

future_error (Clase)

Describe un objeto de excepción que pueden producir los métodos de tipos que administran objetos future.

packaged_task (Clase)

Describe un proveedor asincrónico que es un contenedor de llamadas y cuya signatura de llamada es Ty(ArgTypes...). Su estado asincrónico asociado contiene una copia del objeto al que se puede llamar, además del resultado posible.

promise (Clase)

Describe un proveedor asincrónico.

shared_future (Clase)

Describe un objeto de devolución asincrónico. Al contrario que un objeto future, un proveedor asincrónico se puede asociar a cualquier número de objetos shared_future.

Estructuras

Name

Descripción

is_error_code_enum (Estructura)

Especialización que indica que se puede utilizar future_errc para almacenar un elemento error_code.

uses_allocator (Estructura)

Especialización que siempre contiene true.

Funciones

Name

Descripción

async (Función)

Representa un proveedor asincrónico.

future_category (Función)

Devuelve una referencia al objeto error_category que caracteriza los errores asociados a objetos future.

make_error_code (Función)

Crea un elemento error_code que tiene el objeto error_category que caracteriza los errores de future.

make_error_condition (Función)

Crea un elemento error_condition que tiene el objeto error_category que caracteriza los errores de future.

swap (Función) (<future>)

Intercambia el estado asincrónico asociado de un objeto promise con el de otro.

Enumeraciones

Name

Descripción

future_errc (Enumeración)

Proporciona nombres simbólicos para los errores notificados por la clase future_error.

future_status (Enumeración)

Proporciona nombres simbólicos para los motivos que una función que ha agotado el tiempo de espera puede devolver.

launch (Enumeración)

Representa un tipo de máscara de bits que describe los posibles modos para la función de plantilla async.

Vea también

Otros recursos

Archivos de encabezado de la biblioteca estándar de C++