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 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_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.