packaged_task (Clase)

 

Para obtener la documentación más reciente de Visual Studio 2017 RC, consulte Documentación de Visual Studio 2017 RC.

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

template <class>
class packaged_task;

Constructores públicos

NombreDescripción
Constructor de packaged_task::packaged_taskConstruye un objeto packaged_task.
packaged_task:: ~ packaged_task (destructor)Destruye un objeto packaged_task.

Métodos públicos

NombreDescripción
packaged_task:: get_future (método)Devuelve un futuras objeto que tiene el mismo estado asincrónico asociado.
packaged_task:: make_ready_at_thread_exit (método)Llama al objeto que se puede llamar que se almacena en el estado asincrónico asociado y almacena el valor devuelto de forma atómica.
packaged_task:: Reset (método)Reemplaza el estado asincrónico asociado.
packaged_task:: swap (método)Intercambia el estado asincrónico asociado con el de un objeto especificado.
packaged_task:: Valid (método)Especifica si el objeto tiene un estado asincrónico asociado.

Operadores públicos

NombreDescripción
packaged_task:: operator =Transfiere un estado asincrónico asociado de un objeto especificado.
packaged_task::operator())Llama al objeto que se puede llamar que se almacena en el estado asincrónico asociado, atómicamente almacena el valor devuelto y el estado se establece en listo.
packaged_task:: operator boolEspecifica si el objeto tiene un estado asincrónico asociado.

Encabezado: futuras

Espacio de nombres: std

Devuelve un objeto del tipo future<Ty> que tiene el mismo estado asincrónico asociado.

future<Ty> get_future();

Comentarios

Si el packaged_task objeto no tiene un estado asincrónico asociado, este método produce una future_error que tiene un código de error de no_state.

Si ya se ha llamado a este método para un packaged_task objeto que tiene el mismo estado asincrónico asociado, el método produce una future_error que tiene un código de error de future_already_retrieved.

Llama al objeto que se puede llamar almacenado en el estado asincrónico asociado y almacena el valor devuelto de forma atómica.

void make_ready_at_thread_exit(ArgTypes... args);

Comentarios

Si el packaged_task objeto no tiene un estado asincrónico asociado, este método produce una future_error que tiene un código de error de no_state.

Si este método o make_ready_at_thread_exit ya se ha llamado para una packaged_task objeto que tiene el mismo estado asincrónico asociado, el método produce una future_error que tiene un código de error de promise_already_satisfied.

De lo contrario, llama a este operador INVOKE(fn, args..., Ty), donde fn es el objeto que se puede llamar que se almacena en el estado asincrónico asociado. Cualquier valor devuelto se almacena de forma atómica como el resultado devuelto del estado asincrónico asociado.

Diferencia packaged_task::operator() (), el estado asincrónico asociado no se establece en ready hasta que se han destruido objetos a fin de cuentas locales del subproceso en el subproceso de llamada. Normalmente, los subprocesos bloqueados en el estado asincrónico asociado no se desbloquean hasta que sale del subproceso que realiza la llamada.

Las transferencias de la estado asincrónico asociado de un objeto especificado.

packaged_task& operator=(packaged_task&& Right);

Parámetros

Right
Objeto packaged_task.

Valor devuelto

*this

Comentarios

Después de la operación, Right ya no tiene un estado asincrónico asociado.

Llama al objeto que se puede llamar almacenado en el estado asincrónico asociadoatómicamente almacena el valor devuelto y el estado se establece en listo.

void operator()(ArgTypes... args);

Comentarios

Si el packaged_task objeto no tiene un estado asincrónico asociado, este método produce una future_error que tiene un código de error de no_state.

Si este método o make_ready_at_thread_exit ya se ha llamado para una packaged_task objeto que tiene el mismo estado asincrónico asociado, el método produce una future_error que tiene un código de error de promise_already_satisfied.

De lo contrario, llama a este operador INVOKE(fn, args..., Ty), donde fn es el objeto que se puede llamar que se almacena en el estado asincrónico asociado. Cualquiera devuelve el valor se almacena de forma atómica como el resultado devuelto del estado asincrónico asociado y el estado se establece en listo. Como resultado, todos los subprocesos bloqueados en el estado asincrónico asociado se desbloquean.

Especifica si el objeto tiene una associated asynchronous state.

''' noexcept de cppoperator bool() const;

  
### Return Value  
 `true` if the object has an associated asynchronous state; otherwise, `false`.  
  
##  <a name="packaged_task__packaged_task_constructor"></a>  packaged_task::packaged_task Constructor  
 Constructs a `packaged_task` object.  
  
```cpp
packaged_task() noexcept;
packaged_task(packaged_task&& Right) noexcept;
template <class Fn>
explicit packaged_task(Fn&& fn);

template <class Fn, class Alloc>
explicit packaged_task(allocator_arg_t,
    const Alloc& alloc, Fn&& fn);

Parámetros

Right
Objeto packaged_task.

alloc
Asignador de memoria. Para obtener más información, consulte <> </> > .

fn
Objeto de función.

Comentarios

El primer constructor crea un packaged_task objeto que no tiene ningún estado asincrónico asociado.

El segundo constructor crea un objeto packaged_task y transfiere el estado asincrónico asociado de Right. Después de la operación, Right ya no tiene un estado asincrónico asociado.

El tercer constructor crea un objeto packaged_task que tiene una copia de fn almacenada en su estado asincrónico asociado.

El cuarto constructor crea un objeto packaged_task que tiene una copia de fn almacenada en su estado asincrónico asociado y utiliza alloc para la asignación de memoria.

Destruye un objeto packaged_task.

~packaged_task();

Comentarios

Si el estado asincrónico asociado no listo, los almacenes de destructor un future_error excepción que tiene un código de error broken_promise como el resultado en el estado asincrónico asociado y todos los subprocesos bloqueados en el estado asincrónico asociado se desbloquean.

Usa un nuevo estado asincrónico asociado reemplazar el existente estado asincrónico asociado.

void reset();

Comentarios

En efecto, este método ejecuta *this = packaged_task(move(fn)), donde fn es el objeto de función que se almacena en el estado asincrónico asociado para este objeto. Por lo tanto, se borra el estado del objeto, y get_future, operator(), y make_ready_at_thread_exit se puede llamar como si se encuentra en un objeto recién creado.

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

void swap(packaged_task& Right) noexcept;

Parámetros

Right
Objeto packaged_task.

Especifica si el objeto tiene una associated asynchronous state.

bool valid() const;

Valor devuelto

Es true si el objeto tiene un estado asincrónico asociado; de lo contrario, es false.

Referencia de archivos de encabezado
<>>

Mostrar: