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. |
valevole | 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
A destra
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
A destra
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.