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_code
future_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
.