shared_future – třída
Popisuje asynchronní návratový objekt. Na rozdíl od budoucího objektu může být asynchronní zprostředkovatel přidružený k libovolnému shared_future
počtu objektů.
Syntaxe
template <class Ty>
class shared_future;
Poznámky
Nevolejte žádné jiné metody než valid
, operator=
a destruktor objektu shared_future
, který je prázdný.
shared_future
objekty nejsou synchronizovány. Volání metod na stejném objektu z více vláken zavádí rasu dat, která má nepředvídatelné výsledky.
Členové
Veřejné konstruktory
Název | Popis |
---|---|
shared_future | shared_future Vytvoří objekt. |
Veřejné metody
Název | Popis |
---|---|
get | Načte výsledek uložený v přidruženém asynchronním stavu. |
platný | Určuje, jestli objekt není prázdný. |
Počkej | 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 |
---|---|
shared_future::operator= | Přiřadí nový přidružený asynchronní stav. |
Požadavky
Header:<future>
Obor názvů: std
shared_future::get
Načte výsledek uložený v přidruženém asynchronním stavu.
const Ty& get() const;
Ty& get() const;
void get() const;
Poznámky
Pokud je výsledkem výjimka, metoda ji znovu zvětšuje. V opačném případě se vrátí výsledek.
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 shared_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 shared_future<void>
neexistuje žádná uložená hodnota , vrátí void
metoda .
shared_future::operator=
Přenese přidružený asynchronní stav ze zadaného objektu.
shared_future& operator=(shared_future&& Right) noexcept;
shared_future& operator=(const shared_future& Right);
Parametry
Right
Objekt shared_future
.
Návratová hodnota
*this
Poznámky
U prvního operátoru už po operaci nemá funkce Right přidružený asynchronní stav.
U druhé metody udržuje Right přidružený asynchronní stav.
shared_future::shared_future – konstruktor
shared_future
Vytvoří objekt.
shared_future() noexcept;
shared_future(future<Ty>&& Right) noexcept;
shared_future(shared_future&& Right) noexcept;
shared_future(const shared_future& Right);
Parametry
Right
Budoucnost nebo shared_future
objekt.
Poznámky
První konstruktor vytvoří shared_future
objekt, který nemá přidružený asynchronní stav.
Druhý a třetí konstruktory vytvoří shared_future
objekt a přenesou přidružený asynchronní stav zprava. Právo už nemá přidružený asynchronní stav.
Čtvrtý konstruktor vytvoří shared_future
objekt, který má stejný přidružený asynchronní stav jako Right.
shared_future::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
shared_future::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.
shared_future::wait_for
Blokuje aktuální vlákno, dokud není přidružený asynchronní stav připravený nebo dokud zadaný čas uplynou.
template <class Rep, class Period>
future_status wait_for(
const chrono::duration<Rep, Period>& Rel_time) const;
Parametry
Rel_time
Chrono ::d uration objekt, který určuje maximální časový interval, který vlákno blokuje.
Návratová hodnota
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.
shared_future::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
Chrono ::time_point objekt, který určuje čas, po kterém může vlákno odblokovat.
Návratová hodnota
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.