Condividi tramite


Classe promise

Descrive un provider asincrono.

Sintassi

template <class Ty>
class promise;

Membri

Costruttori pubblici

Nome Descrizione
promettere Costruisce un oggetto promise.

Metodi pubblici

Nome Descrizione
get_future Restituisce un elemento future associato a questo oggetto promise.
set_exception Imposta atomicamente il risultato dell'oggetto promise per indicare un'eccezione.
set_exception_at_thread_exit Imposta atomicamente il risultato dell'oggetto promise per indicare un'eccezione e recapitare la notifica solo dopo che tutti gli oggetti locali nel thread corrente sono stati eliminati definitivamente (in genere all'uscita del thread).
set_value Imposta atomicamente il risultato dell'oggetto promise per indicare un valore.
set_value_at_thread_exit Imposta atomicamente il risultato dell'oggetto promise per indicare un valore e recapitare la notifica solo dopo che tutti gli oggetti locali nel thread corrente sono stati eliminati definitivamente (in genere all'uscita del thread).
swap Scambia lo stato asincrono associato di questo oggetto promise con quello di un oggetto promise specificato.

Operatori pubblici

Nome Descrizione
promise::operator= Assegnazione dello stato condiviso dell'oggetto promise.

Gerarchia di ereditarietà

promettere

Requisiti

Intestazione:<future>

Spazio dei nomi: std

promise::get_future

Restituisce un oggetto future con lo stesso stato asincrono associato di questo oggetto promise.

future<Ty> get_future();

Osservazioni:

Se l'oggetto promise è vuoto, il metodo genera un future_error con error_codeno_state.

Se il metodo è già stato chiamato per un oggetto promise con lo stesso stato asincrono associato, il metodo genera un future_error con error_codefuture_already_retrieved.

promise::operator=

Trasferisce lo stato asincrono associato da un oggetto promise specificato.

promise& operator=(promise&& Other) noexcept;

Parametri

Altro
Oggetto promise.

Valore restituito

*this

Osservazioni:

Questo operatore trasferisce lo stato asincrono associato da Other. Dopo il trasferimento, Other è vuoto.

Costruttore promise::promise

Costruisce un oggetto promise.

promise();
template <class Alloc>
promise(allocator_arg_t, const Alloc& Al);
promise(promise&& Other) noexcept;

Parametri

Ale
Allocatore di memoria. Per altre informazioni sugli allocatori, vedere <allocatori>.

Altro
Oggetto promise.

Osservazioni:

Il primo costruttore costruisce un oggetto vuotopromise.

Il secondo costruttore costruisce un oggetto vuoto promise e usa Al per l'allocazione di memoria.

Il terzo costruttore costruisce un promise oggetto e trasferisce lo stato asincrono associato da Other e lascia vuoto Other .

promise::set_exception

Archivia un'eccezione in modo atomico come risultato di questo oggetto promise e imposta lo stato asincrono associato su ready.

void set_exception(exception_ptr Exc);

Parametri

Exc
Oggetto exception_ptr archiviato con questo metodo come risultato dell'eccezione.

Osservazioni:

Se l'oggetto promise non ha alcuno stato asincrono associato, il metodo genera un future_error con codice di errore no_state.

Se set_exception, set_exception_at_thread_exit, set_value o set_value_at_thread_exit è già stato chiamato per un oggetto promise con lo stesso stato asincrono associato, il metodo genera un future_error con codice di errore promise_already_satisfied.

Come risultato di questo metodo, i thread bloccati sullo stato asincrono associato vengono sbloccati.

promise::set_exception_at_thread_exit

Imposta atomicamente il risultato del'oggetto promise per indicare un'eccezione, recapitante la notifica solo dopo che tutti gli oggetti locali nel thread corrente sono stati eliminati (in genere all'uscita del thread).

void set_exception_at_thread_exit(exception_ptr Exc);

Parametri

Exc
Oggetto exception_ptr archiviato con questo metodo come risultato dell'eccezione.

Osservazioni:

Se l'oggetto promise non ha alcuno stato asincrono associato, il metodo genera un future_error con codice di errore no_state.

Se set_exception, set_exception_at_thread_exit, set_value o set_value_at_thread_exit è già stato chiamato per un oggetto promise con lo stesso stato asincrono associato, il metodo genera un future_error con codice di errore promise_already_satisfied.

A differenza di set_exception, questo metodo non imposta lo stato asincrono associato su pronto fino a quando tutti gli oggetti locali del thread nel thread corrente sono stati eliminati definitivamente. In genere, i thread bloccati nello stato asincrono associato non vengono sbloccati fino all'uscita del thread corrente.

promise::set_value

Archivia un valore in modo atomico come risultato di questo oggetto promise e imposta lo stato asincrono associato su ready.

void promise::set_value(const Ty& Val);
void promise::set_value(Ty&& Val);
void promise<Ty&>::set_value(Ty& Val);
void promise<void>::set_value();

Parametri

Val
Valore da archiviare come risultato.

Osservazioni:

Se l'oggetto promise non ha alcuno stato asincrono associato, il metodo genera un future_error con codice di errore no_state.

Se set_exception, set_exception_at_thread_exit, set_value o set_value_at_thread_exit è già stato chiamato per un oggetto promise con lo stesso stato asincrono associato, il metodo genera un future_error con codice di errore promise_already_satisfied.

Come risultato di questo metodo, i thread bloccati sullo stato asincrono associato vengono sbloccati.

Il primo metodo genera anche qualsiasi eccezione generata quando Val viene copiato nello stato asincrono associato. In questo caso, lo stato asincrono associato non è impostato su pronto.

Il secondo metodo genera anche qualsiasi eccezione generata quando Val viene spostato nello stato asincrono associato. In questo caso, lo stato asincrono associato non è impostato su pronto.

Per la specializzazione promise<Ty&>parziale , il valore archiviato è attivo un riferimento a Val.

Per la specializzazione promise<void>, non esiste alcun valore archiviato.

promise::set_value_at_thread_exit

Archivia un valore in modo atomico come risultato di questo oggetto promise.

void promise::set_value_at_thread_exit(const Ty& Val);
void promise::set_value_at_thread_exit(Ty&& Val);
void promise<Ty&>::set_value_at_thread_exit(Ty& Val);
void promise<void>::set_value_at_thread_exit();

Parametri

Val
Valore da archiviare come risultato.

Osservazioni:

Se l'oggetto promise non ha alcuno stato asincrono associato, il metodo genera un future_error con codice di errore no_state.

Se set_exception, set_exception_at_thread_exit, set_value o set_value_at_thread_exit è già stato chiamato per un oggetto promise con lo stesso stato associato asincrono, il metodo genera un future_error con codice di errore promise_already_satisfied.

A differenza di set_value, lo stato asincrono associato non è impostato su pronto fino a quando tutti gli oggetti locali del thread nel thread corrente sono stati eliminati definitivamente. In genere, i thread bloccati nello stato asincrono associato non vengono sbloccati fino all'uscita del thread corrente.

Il primo metodo genera anche qualsiasi eccezione generata quando Val viene copiato nello stato asincrono associato.

Il secondo metodo genera anche qualsiasi eccezione generata quando Val viene spostato nello stato asincrono associato.

Per la specializzazione promise<Ty&>parziale , il valore archiviato è effettivamente un riferimento a Val.

Per la specializzazione promise<void>, non esiste alcun valore archiviato.

promise::swap

Scambia lo stato asincrono associato di questo oggetto promise con quello di un oggetto specificato.

void swap(promise& Other) noexcept;

Parametri

Altro
Oggetto promise.

Vedi anche

Riferimento file di intestazione