future
Třída
Popisuje asynchronní návratový objekt.
Syntaxe
template <class Ty>
class future;
Poznámky
Každý standardní asynchronní zprostředkovatel vrátí objekt, jehož typ je instance této šablony. Objekt future
poskytuje jediný přístup k asynchronnímu zprostředkovateli, ke kterému je přidružený. Pokud potřebujete více asynchronních návratových objektů přidružených ke stejnému asynchronnímu zprostředkovateli, zkopírujte future
objekt do objektu shared_future
.
Členové
Veřejné konstruktory
Název | Popis |
---|---|
future |
future Vytvoří objekt. |
Veřejné metody
Název | Popis |
---|---|
get |
Načte výsledek uložený v přidruženém asynchronním stavu. |
share |
Převede objekt na objekt .shared_future |
valid |
Určuje, jestli objekt není prázdný. |
wait |
Blokuje aktuální vlákno, dokud není připravený přidružený asynchronní stav. |
wait_for |
Blokuje, dokud není přidružený asynchronní stav připravený nebo dokud zadaný čas uplynou. |
wait_until |
Blokuje, dokud není přidružený asynchronní stav připravený nebo dokud není zadaný bod v čase. |
Veřejné operátory
Název | Popis |
---|---|
future::operator= |
Přenese přidružený asynchronní stav ze zadaného objektu. |
Požadavky
Záhlaví: <future>
Obor názvů: std
Konstruktory
future
Vytvoří objekt.
future() noexcept;
future(future&& Other) noexcept;
Parametry
Other
Objekt future
.
Poznámky
První konstruktor vytvoří future
objekt, který nemá přidružený asynchronní stav.
Druhý konstruktor vytvoří future
objekt a přenese přidružený asynchronní stav z Jiné. Jiné už nemají přidružený asynchronní stav.
get
Načte výsledek uložený v přidruženém asynchronním stavu.
Ty get();
Návratová hodnota
Pokud je výsledkem výjimka, metoda ji znovu zvětšuje. V opačném případě se vrátí výsledek.
Poznámky
Před načtením výsledku tato metoda blokuje aktuální vlákno, dokud není přidružený asynchronní stav připravený.
Pro částečnou specializaci future<Ty&>
je uložená hodnota efektivně odkazem na objekt, který byl předán asynchronnímu zprostředkovateli jako návratová hodnota.
Vzhledem k tomu, že pro specializaci future<void>
neexistuje žádná uložená hodnota , vrátí void
metoda .
V jiných specializacech metoda přesune svoji návratovou hodnotu z uložené hodnoty. Proto volejte tuto metodu pouze jednou.
operator=
Přenese přidružený asynchronní stav ze zadaného objektu.
future& operator=(future&& Right) noexcept;
Parametry
Right
Objekt future
.
Návratová hodnota
*this
Poznámky
Po převodu už funkce Right nemá přidružený asynchronní stav.
share
Převede objekt na shared_future
objekt.
shared_future<Ty> share();
Návratová hodnota
shared_future(move(*this))
valid
Určuje, zda objekt má přidružený asynchronní stav.
bool valid() noexcept;
Návratová hodnota
true
pokud má objekt přidružený asynchronní stav; v opačném případě . false
wait
Blokuje aktuální vlákno, dokud není připravený přidružený asynchronní stav.
void wait() const;
Poznámky
Přidružený asynchronní stav je připravený pouze v případě, že jeho asynchronní zprostředkovatel uložil návratovou hodnotu nebo uložil výjimku.
wait_for
Blokuje aktuální vlákno, dokud není přidružený asynchronní stav připravený nebo dokud zadaný časový interval uplynul.
template <class Rep, class Period>
future_status wait_for(const chrono::duration<Rep, Period>& Rel_time) const;
Parametry
Rel_time
Objekt chrono::duration
, který určuje maximální časový interval, který vlákno blokuje.
Návratová hodnota
A future_status
, který označuje důvod vrácení.
Poznámky
Přidružený asynchronní stav je připravený pouze v případě, že jeho asynchronní zprostředkovatel uložil návratovou hodnotu nebo uložil výjimku.
wait_until
Blokuje aktuální vlákno, dokud není přidružený asynchronní stav připravený nebo až po zadaném časovém bodu.
template <class Clock, class Duration>
future_status wait_until(const chrono::time_point<Clock, Duration>& Abs_time) const;
Parametry
Abs_time
Objekt time_point
, který určuje čas, po kterém může vlákno odblokovat.
Návratová hodnota
A future_status
, který označuje důvod vrácení.
Poznámky
Přidružený asynchronní stav je připravený pouze v případě, že jeho asynchronní zprostředkovatel uložil návratovou hodnotu nebo uložil výjimku.