Condividi tramite


Classe shared_future

Descrive un oggetto restituito asincrono. Diversamente da un oggetto future, un provider asincrono può essere associato a un numero qualsiasi di oggetti shared_future.

Sintassi

template <class Ty>
class shared_future;

Osservazioni:

Non chiamare metodi diversi da valid, operator=e il distruttore in un shared_future oggetto vuoto.

shared_future gli oggetti non vengono sincronizzati. La chiamata di metodi sullo stesso oggetto da più thread introduce una competizione tra dati con risultati imprevisti.

Membri

Costruttori pubblici

Nome Descrizione
shared_future Costruisce un oggetto shared_future.

Metodi pubblici

Nome Descrizione
get Recupera il risultato archiviato nello stato asincrono associato.
Valido Specifica se l'oggetto non è vuoto.
Aspettare Blocca il thread corrente finché lo stato asincrono associato non è ready.
wait_for Blocca finché lo stato asincrono associato non è ready o finché non trascorre il periodo di tempo specificato.
wait_until Blocca finché lo stato asincrono associato non è ready o fino al momento specificato.

Operatori pubblici

Nome Descrizione
shared_future::operator= Assegna un nuovo stato asincrono associato.

Requisiti

Intestazione:<future>

Spazio dei nomi: std

shared_future::get

Recupera il risultato archiviato nello stato asincrono associato.

const Ty& get() const;

Ty& get() const;

void get() const;

Osservazioni:

Se il risultato è un'eccezione, il metodo la genera nuovamente. In caso contrario, viene restituito il risultato.

Prima di recuperare il risultato, questo metodo blocca il thread corrente finché lo stato asincrono associato non è ready.

Per la specializzazione parziale shared_future<Ty&>, il valore archiviato è di fatto un riferimento all'oggetto passato al provider asincrono come valore restituito.

Poiché non esiste alcun valore archiviato per la specializzazione shared_future<void>, il metodo restituisce void.

shared_future::operator=

Trasferisce uno stato asincrono associato da un oggetto specificato.

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

Parametri

Right
Oggetto shared_future.

Valore restituito

*this

Osservazioni:

Per il primo operatore, Right non ha più uno stato asincrono associato dopo l'operazione.

Per il secondo metodo, Right mantiene lo stato asincrono associato.

Costruttore shared_future::shared_future

Costruisce un oggetto shared_future.

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

Parametri

Right
Oggetto future o shared_future.

Osservazioni:

Il primo costruttore costruisce un oggetto shared_future che non ha uno stato asincrono associato.

Il secondo e il terzo costruttore costruiscono un shared_future oggetto e trasferiscono lo stato asincrono associato da Right. Right non ha più uno stato asincrono associato.

Il quarto costruttore costruisce un shared_future oggetto con lo stesso stato asincrono associato a Right.

shared_future::valid

Specifica se l'oggetto ha uno stato asincrono associato.

bool valid() noexcept;

Valore restituito

true se l'oggetto ha uno stato asincrono associato; in caso contrario, false.

shared_future::wait

Blocca il thread corrente finché lo stato asincrono associato non è ready.

void wait() const;

Osservazioni:

Uno stato asincrono associato è ready solo se il provider asincrono ha archiviato un valore restituito o un'eccezione.

shared_future::wait_for

Blocca il thread corrente finché lo stato asincrono associato non è ready o finché non è trascorso un periodo di tempo specificato.

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

Parametri

Rel_time
Oggetto chrono::duration che specifica un intervallo di tempo massimo per il blocco del thread.

Valore restituito

Oggetto future_status che indica il motivo della restituzione.

Osservazioni:

Uno stato asincrono associato è ready solo se il provider asincrono ha archiviato un valore restituito o un'eccezione.

shared_future::wait_until

Blocca il thread corrente finché lo stato asincrono associato non è ready o fino a un determinato momento.

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

Parametri

Abs_time
Oggetto chrono::time_point che specifica un momento dopo il quale il thread può essere sbloccato.

Valore restituito

Oggetto future_status che indica il motivo della restituzione.

Osservazioni:

Uno stato asincrono associato è ready solo se il provider asincrono ha archiviato un valore restituito o un'eccezione.

Vedi anche

Riferimento file di intestazione
<future>