Partager via


shared_future, classe

Décrit un objet de retour asynchrone. Contrairement à un objet future, un fournisseur asynchrone peut être associé à un nombre quelconque d’objets shared_future.

Syntaxe

template <class Ty>
class shared_future;

Notes

N’appelez aucune méthode autre que valid, operator=et le destructeur sur un shared_future objet vide.

shared_future les objets ne sont pas synchronisés. L’appel de méthodes sur le même objet par plusieurs threads provoque une concurrence critique des données qui a des résultats imprévisibles.

Membres

Constructeurs publics

Nom Description
shared_future Construit un objet shared_future.

Méthodes publiques

Nom Description
get Récupère le résultat qui est stocké dans l’état asynchrone associé.
valable Spécifie si l’objet n’est pas vide.
wait Bloque le thread actuel jusqu’à ce que l’état asynchrone associé soit prêt.
wait_for Bloque le thread actuel jusqu’à ce que l’état asynchrone associé soit prêt ou que le délai spécifié soit écoulé.
wait_until Bloque le thread actuel jusqu’à ce que l’état asynchrone associé soit prêt ou jusqu’à un point spécifié dans le temps.

Opérateurs publics

Nom Description
shared_future::operator= Assigne un nouvel état asynchrone associé.

Spécifications

Header :<future>

Espace de noms : std

shared_future ::get

Récupère le résultat qui est stocké dans l’état asynchrone associé.

const Ty& get() const;

Ty& get() const;

void get() const;

Notes

Si le résultat est une exception, la méthode la lève de nouveau. Sinon, le résultat est retourné.

Avant de récupérer le résultat, cette méthode bloque le thread actuel jusqu’à ce que l’état asynchrone associé soit prêt.

Pour la spécialisation partielle shared_future<Ty&>, la valeur stockée est une référence à l’objet qui a été passé au fournisseur asynchrone comme valeur de retour.

Comme il n’y a pas de valeur stockée pour la spécialisation shared_future<void>, la méthode retourne void.

shared_future::operator=

Transfère un état asynchrone associé à partir d’un objet spécifié.

shared_future& operator=(shared_future&& Right) noexcept;
shared_future& operator=(const shared_future& Right);

Paramètres

Right
Objet shared_future.

Valeur de retour

*this

Notes

Pour le premier opérateur, Right n’a plus d’état asynchrone associé après l’opération.

Pour la deuxième méthode, Right conserve son état asynchrone associé.

shared_future::shared_future, constructeur

Construit un objet shared_future.

shared_future() noexcept;
shared_future(future<Ty>&& Right) noexcept;
shared_future(shared_future&& Right) noexcept;
shared_future(const shared_future& Right);

Paramètres

Right
Objet future ou shared_future.

Notes

Le premier constructeur construit un objet shared_future sans état asynchrone associé.

Les deuxième et troisième constructeurs construisent un shared_future objet et transfèrent l’état asynchrone associé à partir de Right. Right n’a plus d’état asynchrone associé.

Le quatrième constructeur construit un shared_future objet qui a le même état asynchrone associé que Right.

shared_future ::valid

Spécifie si l’objet a un état asynchrone associé.

bool valid() noexcept;

Valeur de retour

true si l'objet possède un état asynchrone associé ; sinon, false.

shared_future ::wait

Bloque le thread actuel jusqu’à ce que l’état asynchrone associé soit prêt.

void wait() const;

Notes

Un état asynchrone associé est prêt uniquement si son fournisseur asynchrone a stocké une valeur de retour ou une exception.

shared_future ::wait_for

Bloque le thread actuel jusqu’à ce que l’état asynchrone associé soit prêt ou que le temps spécifié soit écoulé.

template <class Rep, class Period>
future_status wait_for(
    const chrono::duration<Rep, Period>& Rel_time) const;

Paramètres

Rel_time
Objet chrono::duration qui spécifie un intervalle de temps maximal pour le blocage du thread.

Valeur de retour

future_status qui indique la raison du retour.

Notes

Un état asynchrone associé est prêt uniquement si son fournisseur asynchrone a stocké une valeur de retour ou une exception.

shared_future ::wait_until

Bloque le thread actuel jusqu’à ce que l’état asynchrone associé soit prêt ou jusqu’à un point spécifié dans le temps.

template <class Clock, class Duration>
future_status wait_until(
    const chrono::time_point<Clock, Duration>& Abs_time) const;

Paramètres

Abs_time
Objet chrono::time_point qui spécifie un point dans le temps après lequel le thread peut être débloqué.

Valeur de retour

future_status qui indique la raison du retour.

Notes

Un état asynchrone associé est prêt uniquement si son fournisseur asynchrone a stocké une valeur de retour ou une exception.

Voir aussi

Informations de référence sur les fichiers d’en-tête
<future>