Udostępnij przez


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.

Członkowie

Konstruktory publiczne

Nazwa/nazwisko opis
Shared_future shared_future Tworzy obiekt.

Metody publiczne

Nazwa/nazwisko opis
get Pobiera wynik przechowywany w skojarzonym stanie asynchronicznym.
Prawidłowe 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 stanuasynchronicznego.

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.

Zobacz też

Odwołanie do plików nagłówka
<Przyszłości>