shared_future — Klasa
Opisuje asynchroniczny obiekt zwracany. W przeciwieństwie do przyszłego obiektu dostawca asynchroniczny może być skojarzony z dowolną liczbą shared_future
obiektów.
Składnia
template <class Ty>
class shared_future;
Uwagi
Nie należy wywoływać żadnych metod innych niż valid
, operator=
i destruktor w shared_future
obiekcie, który jest pusty.
shared_future
obiekty nie są synchronizowane. Wywoływanie metod na tym samym obiekcie z wielu wątków wprowadza wyścig danych, który ma nieprzewidywalne wyniki.
Elementy członkowskie
Konstruktory publiczne
Nazwa/nazwisko | opis |
---|---|
shared_future | shared_future Tworzy obiekt. |
Metody publiczne
Nazwa/nazwisko | opis |
---|---|
get | Pobiera wynik przechowywany w skojarzonym stanie asynchronicznym. |
ważny | Określa, czy obiekt nie jest pusty. |
czekać | Blokuje bieżący wątek do momentu gotowości skojarzonego stanu asynchronicznego. |
wait_for | Blokuje stan asynchroniczny skojarzony lub do czasu upływu określonego czasu. |
wait_until | Blokuje, dopóki skojarzony stan asynchroniczny nie będzie gotowy lub do określonego punktu w czasie. |
Operatory publiczne
Nazwa/nazwisko | opis |
---|---|
shared_future::operator= | Przypisuje nowy skojarzony stan asynchroniczny. |
Wymagania
Nagłówek:<przyszłość>
Przestrzeń nazw: std
shared_future::get
Pobiera wynik przechowywany w skojarzonym stanie asynchronicznym.
const Ty& get() const;
Ty& get() const;
void get() const;
Uwagi
Jeśli wynik jest wyjątkiem, metoda ponownie go wywróci. W przeciwnym razie zostanie zwrócony wynik.
Przed pobraniem wyniku ta metoda blokuje bieżący wątek do momentu gotowości skojarzonego stanu asynchronicznego.
W przypadku częściowej specjalizacji shared_future<Ty&>
wartość przechowywana jest w rzeczywistości odwołaniem do obiektu przekazanego do dostawcy asynchronicznego jako wartości zwracanej.
Ponieważ dla specjalizacji shared_future<void>
nie istnieje żadna przechowywana wartość , metoda zwraca void
wartość .
shared_future::operator=
Transferuje skojarzony stan asynchroniczny z określonego obiektu.
shared_future& operator=(shared_future&& Right) noexcept;
shared_future& operator=(const shared_future& Right);
Parametry
Right
Obiekt shared_future
.
Wartość zwracana
*this
Uwagi
Dla pierwszego operatora po operacji nie ma już skojarzonego stanu asynchronicznego.
W przypadku drugiej metody Right utrzymuje skojarzony stan asynchroniczny.
konstruktor shared_future::shared_future
shared_future
Tworzy obiekt.
shared_future() noexcept;
shared_future(future<Ty>&& Right) noexcept;
shared_future(shared_future&& Right) noexcept;
shared_future(const shared_future& Right);
Parametry
Right
Przyszłość lub shared_future
obiekt.
Uwagi
Pierwszy konstruktor tworzy shared_future
obiekt, który nie ma skojarzonego stanu asynchronicznego.
Drugie i trzecie konstruktory skonstruować shared_future
obiekt i przenieść skojarzony stan asynchroniczny z prawej. Prawo nie ma już skojarzonego stanu asynchronicznego.
Czwarty konstruktor tworzy shared_future
obiekt, który ma taki sam skojarzony stan asynchroniczny jak Right.
shared_future::valid
Określa, czy obiekt ma skojarzony stan asynchroniczny.
bool valid() noexcept;
Wartość zwracana
true
jeśli obiekt ma skojarzony stan asynchroniczny; w przeciwnym razie, false
.
shared_future::wait
Blokuje bieżący wątek do momentu gotowości skojarzonego stanu asynchronicznego.
void wait() const;
Uwagi
Skojarzony stan asynchroniczny jest gotowy tylko wtedy, gdy jego dostawca asynchroniczny przechowywał wartość zwracaną lub przechowywał wyjątek.
shared_future::wait_for
Blokuje bieżący wątek do momentu, aż skojarzony stan asynchroniczny będzie gotowy lub do określonego czasu.
template <class Rep, class Period>
future_status wait_for(
const chrono::duration<Rep, Period>& Rel_time) const;
Parametry
Rel_time
Obiekt chrono::d uration, który określa maksymalny interwał czasu bloków wątku.
Wartość zwracana
Future_status, który wskazuje przyczynę powrotu.
Uwagi
Skojarzony stan asynchroniczny jest gotowy tylko wtedy, gdy jego dostawca asynchroniczny przechowywał wartość zwracaną lub przechowywał wyjątek.
shared_future::wait_until
Blokuje bieżący wątek do momentu, aż skojarzony stan asynchroniczny będzie gotowy lub do momentu po określonym punkcie czasu.
template <class Clock, class Duration>
future_status wait_until(
const chrono::time_point<Clock, Duration>& Abs_time) const;
Parametry
Abs_time
Obiekt chrono::time_point, który określa czas, po którym wątek może odblokować.
Wartość zwracana
Future_status, który wskazuje przyczynę powrotu.
Uwagi
Skojarzony stan asynchroniczny jest gotowy tylko wtedy, gdy jego dostawca asynchroniczny przechowywał wartość zwracaną lub przechowywał wyjątek.