promise — Klasa
Opisuje dostawcę asynchronicznego.
Składnia
template <class Ty>
class promise;
Elementy członkowskie
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). |
zamiana | 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 pusty promise
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_exception
obiekt , 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_satisfied
błę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_satisfied
błę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_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_satisfied
błę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_satisfied
błę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
.