promise, classe
Décrit un fournisseur asynchrone.
Syntaxe
template <class Ty>
class promise;
Membres
Constructeurs publics
Nom | Description |
---|---|
promesse | Construit un objet promise . |
Méthodes publiques
Nom | Description |
---|---|
get_future | Retourne un objet future associé à cet objet promise. |
set_exception | Définit atomiquement le résultat de cet objet promise pour indiquer une exception. |
set_exception_at_thread_exit | Définit atomiquement le résultat de cet objet promise pour indiquer une exception, et remet la notification uniquement quand tous les objets locaux de thread dans le thread actuel ont été détruits (généralement à la sortie du thread). |
set_value | Définit atomiquement le résultat de cet objet promise pour indiquer une valeur. |
set_value_at_thread_exit | Définit atomiquement le résultat de cet objet promise pour indiquer une valeur, et remet la notification uniquement quand tous les objets locaux de thread dans le thread actuel ont été détruits (généralement à la sortie du thread). |
swap | Échange l’état asynchrone associé de cet objet promise avec celui d’un objet promise spécifié. |
Opérateurs publics
Nom | Description |
---|---|
promise::operator= | Assignation de l’état partagé de cet objet promise. |
Hiérarchie d'héritage
promesse
Spécifications
Header :<future>
Espace de noms : std
promise::get_future
Retourne un objet future qui a le même état asynchrone associé que cet objet promise.
future<Ty> get_future();
Notes
Si l’objet promise est vide, cette méthode lève une exception future_error avec le code error_codeno_state
.
Si cette méthode a déjà été appelée pour un objet promise ayant le même état asynchrone associé, la méthode lève une exception future_error
avec le code error_code
future_already_retrieved
.
promise::operator=
Transfère l’état asynchrone associé à partir d’un objet promise
spécifié.
promise& operator=(promise&& Other) noexcept;
Paramètres
Other
Objet promise
.
Valeur de retour
*this
Notes
Cet opérateur transfère l’état asynchrone associé à Other. Après le transfert, Other est vide.
promise::promise, constructeur
Construit un objet promise
.
promise();
template <class Alloc>
promise(allocator_arg_t, const Alloc& Al);
promise(promise&& Other) noexcept;
Paramètres
Al
Allocateur de mémoire. Pour plus d’informations sur les allocators, consultez les allocators>.<
Other
Objet promise
.
Notes
Le premier constructeur construit un objet videpromise
.
Le deuxième constructeur construit un objet vide promise
et utilise Al pour l’allocation de mémoire.
Le troisième constructeur construit un promise
objet et transfère l’état asynchrone associé à Other et laisse Other vide.
promise::set_exception
Stocke atomiquement une exception comme résultat de cet objet promise
et définit l’état asynchrone associé sur ready.
void set_exception(exception_ptr Exc);
Paramètres
Exc
exception_ptr qui est stocké par cette méthode comme résultat de l’exception.
Notes
Si l’objet promise
n’a pas d’état asynchrone associé, cette méthode lève une exception future_error avec le code d’erreur no_state
.
Si la méthode set_exception
, set_exception_at_thread_exit, set_value ou set_value_at_thread_exit a déjà été appelée pour un objet promise
ayant le même état asynchrone associé, cette méthode lève une exception future_error
avec le code d’erreur promise_already_satisfied
.
Cette méthode libère tous les threads qui sont bloqués sur l’état asynchrone associé.
promise::set_exception_at_thread_exit
Définit atomiquement le résultat de cet objet promise
pour indiquer une exception, et remet la notification uniquement quand tous les objets locaux de thread dans le thread actuel ont été détruits (généralement à la sortie du thread).
void set_exception_at_thread_exit(exception_ptr Exc);
Paramètres
Exc
exception_ptr qui est stocké par cette méthode comme résultat de l’exception.
Notes
Si l’objet promise n’a pas d’état asynchrone associé, cette méthode lève une exception future_error avec le code d’erreur no_state
.
Si la méthode set_exception, set_exception_at_thread_exit
, set_value ou set_value_at_thread_exit a déjà été appelée pour un objet promise
ayant le même état asynchrone associé, cette méthode lève une exception future_error
avec le code d’erreur promise_already_satisfied
.
Contrairement à set_exception, cette méthode ne définit pas l’état asynchrone associé comme prêt tant que tous les objets locaux de thread dans le thread actuel n’ont pas été détruits. En règle générale, les threads qui sont bloqués sur l’état asynchrone associé ne sont pas débloqués tant que le thread actuel ne se termine pas.
promise::set_value
Stocke atomiquement une valeur comme résultat de cet objet promise
et définit l’état asynchrone associé sur 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();
Paramètres
Val
Valeur à stocker comme résultat.
Notes
Si l’objet promise
n’a pas d’état asynchrone associé, cette méthode lève une exception future_error avec le code d’erreur no_state
.
Si la méthode set_exception, set_exception_at_thread_exit, set_value
ou set_value_at_thread_exit a déjà été appelée pour un objet promise
ayant le même état asynchrone associé, cette méthode lève une exception future_error
avec le code d’erreur promise_already_satisfied
.
Cette méthode libère tous les threads qui sont bloqués sur l’état asynchrone associé.
La première méthode lève également toute exception levée lorsque Val est copié dans l’état asynchrone associé. Dans ce cas, l’état asynchrone associé n’est pas prêt.
La deuxième méthode lève également toute exception levée lorsque Val est déplacé dans l’état asynchrone associé. Dans ce cas, l’état asynchrone associé n’est pas prêt.
Pour la spécialisation promise<Ty&>
partielle, la valeur stockée est en effet une référence à Val.
Pour la spécialisation promise<void>
, aucune valeur stockée n’existe.
promise::set_value_at_thread_exit
Stocke atomiquement une valeur comme résultat de cet objet 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();
Paramètres
Val
Valeur à stocker comme résultat.
Notes
Si l’objet promise n’a pas d’état asynchrone associé, cette méthode lève une exception future_error avec le code d’erreur no_state
.
Si la méthode set_exception, set_exception_at_thread_exit, set_value ou set_value_at_thread_exit
a déjà été appelée pour un objet promise
ayant le même état asynchrone associé, cette méthode lève une exception future_error
avec le code d’erreur promise_already_satisfied
.
Contrairement à set_value
, l’état asynchrone associé n’est pas défini sur prêt tant que tous les objets locaux de thread dans le thread actuel n’ont pas été détruits. En règle générale, les threads qui sont bloqués sur l’état asynchrone associé ne sont pas débloqués tant que le thread actuel ne se termine pas.
La première méthode lève également toute exception levée lorsque Val est copié dans l’état asynchrone associé.
La deuxième méthode lève également toute exception levée lorsque Val est déplacé dans l’état asynchrone associé.
Pour la spécialisation promise<Ty&>
partielle, la valeur stockée est effectivement une référence à Val.
Pour la spécialisation promise<void>
, aucune valeur stockée n’existe.
promise::swap
Échange l’état asynchrone associé de cet objet promise avec celui d’un objet spécifié.
void swap(promise& Other) noexcept;
Paramètres
Other
Objet promise
.