Udostępnij przez


promise — Klasa

Opisuje dostawcę asynchronicznego.

Składnia

template <class Ty>
class promise;

Członkowie

Konstruktory publiczne

Nazwa/nazwisko opis
Obietnica promise Tworzy obiekt.

Metody publiczne

Nazwa/nazwisko opis
get_future Zwraca przyszłość skojarzona z tą obietnicą.
set_exception Niepodzielne ustawia wynik tej obietnicy, aby wskazać wyjątek.
set_exception_at_thread_exit Niepodzielne ustawia wynik tej obietnicy, aby wskazać wyjątek i dostarcza powiadomienie dopiero po tym, jak wszystkie obiekty lokalne wątku w bieżącym wątku zostały zniszczone (zwykle w przypadku zakończenia wątku).
set_value Niepodzielne ustawia wynik tej obietnicy, aby wskazać wartość.
set_value_at_thread_exit Niepodzielne ustawia wynik tej obietnicy, aby wskazać wartość i dostarcza powiadomienie dopiero po tym, jak wszystkie obiekty lokalne wątku w bieżącym wątku zostały zniszczone (zwykle w momencie zakończenia wątku).
Wymiany Wymienia skojarzony stan asynchroniczny tej obietnicy z określonym obiektem obietnicy.

Operatory publiczne

Nazwa/nazwisko opis
promise::operator= Przypisanie współużytkowanego stanu tego obiektu obietnicy.

Hierarchia dziedziczenia

Obietnica

Wymagania

Nagłówek:<przyszłość>

Przestrzeń nazw: std

promise::get_future

Zwraca przyszły obiekt, który ma ten sam skojarzony stan asynchroniczny co ta obietnica.

future<Ty> get_future();

Uwagi

Jeśli obiekt obietnicy jest pusty, ta metoda zgłasza future_error, który ma error_code .no_state

Jeśli ta metoda została już wywołana dla obiektu obietnicy, który ma taki sam skojarzony stan asynchroniczny, metoda zgłasza future_error obiekt o error_code wartości future_already_retrieved.

promise::operator=

Przenosi skojarzony stan asynchroniczny z określonego promise obiektu.

promise& operator=(promise&& Other) noexcept;

Parametry

Inne
Obiekt promise.

Wartość zwracana

*this

Uwagi

Ten operator przenosi skojarzony stan asynchroniczny z innego. Po przeniesieniu wartość Other jest pusta.

promise::p romise, konstruktor

promise Tworzy obiekt.

promise();
template <class Alloc>
promise(allocator_arg_t, const Alloc& Al);
promise(promise&& Other) noexcept;

Parametry

Al
Alokator pamięci. Aby uzyskać więcej informacji na temat alokatorów, zobacz alokatory>.<

Inne
Obiekt promise.

Uwagi

Pierwszy konstruktor tworzy pustypromise obiekt.

Drugi konstruktor tworzy pusty promise obiekt i używa al do alokacji pamięci.

Trzeci konstruktor konstruuje promise obiekt i przenosi skojarzony stan asynchroniczny z other i pozostawia pole Inne puste.

promise::set_exception

Niepodzielne przechowuje wyjątek w wyniku tego promise obiektu i ustawia skojarzony stan asynchroniczny na gotowy.

void set_exception(exception_ptr Exc);

Parametry

Exc
Exception_ptr, który jest przechowywany przez tę metodę jako wynik wyjątku.

Uwagi

promise Jeśli obiekt nie ma skojarzonego stanu asynchronicznego, ta metoda zgłasza future_error z kodem błędu no_state.

Jeśli set_exceptionobiekt , set_exception_at_thread_exit, set_value lub set_value_at_thread_exit został już wywołany dla promise obiektu, który ma taki sam stan asynchroniczny, ta metoda zgłasza future_error kod promise_already_satisfiedbłędu .

W wyniku tej metody wszystkie wątki, które są blokowane w skojarzonym stanie asynchronicznym, stają się odblokowane.

promise::set_exception_at_thread_exit

Niepodzielne ustawia wynik tego promise elementu, aby wskazać wyjątek, dostarczając powiadomienie tylko po tym, jak wszystkie obiekty lokalne wątku w bieżącym wątku zostały zniszczone (zwykle w momencie zakończenia wątku).

void set_exception_at_thread_exit(exception_ptr Exc);

Parametry

Exc
Exception_ptr, który jest przechowywany przez tę metodę jako wynik wyjątku.

Uwagi

Jeśli obiekt obietnicy nie ma skojarzonego stanu asynchronicznego, ta metoda zgłasza future_error z kodem błędu no_state.

Jeśli set_exception, set_exception_at_thread_exit, set_value lub set_value_at_thread_exit został już wywołany dla promise obiektu, który ma taki sam stan asynchroniczny, ta metoda zgłasza future_error kod promise_already_satisfiedbłędu .

W przeciwieństwie do set_exception ta metoda nie ustawia skojarzonego stanu asynchronicznego na gotowy do momentu zniszczenia wszystkich obiektów lokalnych wątku w bieżącym wątku. Zazwyczaj wątki, które są blokowane w skojarzonym stanie asynchronicznym, nie są odblokowane do momentu zakończenia bieżącego wątku.

promise::set_value

Niepodzielne przechowuje wartość w wyniku tego promise obiektu i ustawia skojarzony stan asynchroniczny na gotowy.

void promise::set_value(const Ty& Val);
void promise::set_value(Ty&& Val);
void promise<Ty&>::set_value(Ty& Val);
void promise<void>::set_value();

Parametry

Val
Wartość, która ma być przechowywana w wyniku.

Uwagi

promise Jeśli obiekt nie ma skojarzonego stanu asynchronicznego, ta metoda zgłasza future_error z kodem błędu no_state.

Jeśli set_exception, set_exception_at_thread_exit, set_valuelub set_value_at_thread_exit został już wywołany dla promise obiektu, który ma taki sam stan asynchroniczny, ta metoda zgłasza future_error kod promise_already_satisfiedbłędu .

W wyniku tej metody wszystkie wątki, które są blokowane w skojarzonym stanie asynchronicznym, stają się odblokowane.

Pierwsza metoda zgłasza również wyjątek zgłaszany podczas kopiowania val do skojarzonego stanu asynchronicznego. W takiej sytuacji skojarzony stan asynchroniczny nie jest ustawiony na gotowy.

Druga metoda zgłasza również wyjątek zgłaszany, gdy val jest przenoszony do skojarzonego stanu asynchronicznego. W takiej sytuacji skojarzony stan asynchroniczny nie jest ustawiony na gotowy.

W przypadku częściowej specjalizacji promise<Ty&>przechowywana wartość jest w efekcie odwołaniem do Val.

W przypadku specjalizacji promise<void>nie istnieje wartość przechowywana.

promise::set_value_at_thread_exit

Niepodzielne przechowuje wartość w wyniku tego promise obiektu.

void promise::set_value_at_thread_exit(const Ty& Val);
void promise::set_value_at_thread_exit(Ty&& Val);
void promise<Ty&>::set_value_at_thread_exit(Ty& Val);
void promise<void>::set_value_at_thread_exit();

Parametry

Val
Wartość, która ma być przechowywana w wyniku.

Uwagi

Jeśli obiekt obietnicy nie ma skojarzonego stanu asynchronicznego, ta metoda zgłasza future_error z kodem błędu no_state.

Jeśli set_exception, set_exception_at_thread_exit, set_value lub set_value_at_thread_exit został już wywołany dla promise obiektu, który ma taki sam stan asynchroniczny, ta metoda zgłasza future_error kod promise_already_satisfiedbłędu .

W przeciwieństwie do set_value, skojarzony stan asynchroniczny nie jest ustawiony na gotowy do momentu zniszczenia wszystkich obiektów lokalnych wątku w bieżącym wątku. Zazwyczaj wątki, które są blokowane w skojarzonym stanie asynchronicznym, nie są odblokowane do momentu zakończenia bieżącego wątku.

Pierwsza metoda zgłasza również wyjątek zgłaszany podczas kopiowania val do skojarzonego stanu asynchronicznego.

Druga metoda zgłasza również wyjątek zgłaszany, gdy val jest przenoszony do skojarzonego stanu asynchronicznego.

W przypadku częściowej specjalizacji promise<Ty&>przechowywana wartość jest skutecznie odwołaniem do Val.

W przypadku specjalizacji promise<void>nie istnieje wartość przechowywana.

promise::swap

Wymienia skojarzony stan asynchroniczny tego obiektu obietnicy z określonym obiektem.

void swap(promise& Other) noexcept;

Parametry

Inne
Obiekt promise.

Zobacz też

Odwołanie do plików nagłówka