Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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 voidwartość .
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.