promise – třída
Popisuje asynchronního zprostředkovatele.
Syntaxe
template <class Ty>
class promise;
Členové
Veřejné konstruktory
Název | Popis |
---|---|
slib | promise Vytvoří objekt. |
Veřejné metody
Název | Popis |
---|---|
get_future | Vrátí budoucnost spojenou s tímto příslibem. |
set_exception | Atomicky nastaví výsledek tohoto slibu tak, aby označoval výjimku. |
set_exception_at_thread_exit | Atomicky nastaví výsledek tohoto slibu na označení výjimky a doručí oznámení až po zničení všech objektů thread-local v aktuálním vlákně (obvykle při ukončení vlákna). |
set_value | Atomicky nastaví výsledek tohoto slibu tak, aby označoval hodnotu. |
set_value_at_thread_exit | Atomicky nastaví výsledek tohoto slibu na hodnotu a doručí oznámení až po zničení všech objektů místních vláken v aktuálním vlákně (obvykle při ukončení vlákna). |
vyměnit | Vymění přidružený asynchronní stav tohoto příslibu s daným objektem příslibu. |
Veřejné operátory
Název | Popis |
---|---|
promise::operator= | Přiřazení sdíleného stavu tohoto objektu příslibu. |
Hierarchie dědičnosti
slib
Požadavky
Header:<future>
Namespace: std
promise::get_future
Vrátí budoucí objekt, který má stejný asynchronní stav jako tento slib.
future<Ty> get_future();
Poznámky
Pokud je objekt příslibu prázdný, tato metoda vyvolá future_error, který má error_code no_state
.
Pokud tato metoda již byla volána pro objekt příslibu, který má stejný přidružený asynchronní stav, metoda vyvolá future_error
, který má jeden error_code
z future_already_retrieved
.
promise::operator=
Přenese přidružený asynchronní stav ze zadaného promise
objektu.
promise& operator=(promise&& Other) noexcept;
Parametry
Další
Objekt promise
.
Návratová hodnota
*this
Poznámky
Tento operátor přenese přidružený asynchronní stav z jiného. Po převodu je jiná prázdná.
promise::p romise – konstruktor
promise
Vytvoří objekt.
promise();
template <class Alloc>
promise(allocator_arg_t, const Alloc& Al);
promise(promise&& Other) noexcept;
Parametry
Hliník
Alokátor paměti. Další informace o alokátorech naleznete v tématu alokátory>.<
Další
Objekt promise
.
Poznámky
První konstruktor vytvoří prázdný promise
objekt.
Druhý konstruktor vytvoří prázdný promise
objekt a použije Al pro přidělení paměti.
Třetí konstruktor vytvoří promise
objekt a přenese přidružený asynchronní stav z Jiné a ponechá ostatní prázdné.
promise::set_exception
Atomicky ukládá výjimku jako výsledek tohoto promise
objektu a nastaví přidružený asynchronní stav připravený.
void set_exception(exception_ptr Exc);
Parametry
Exc
Výsledek výjimky exception_ptr , který je uložen touto metodou.
Poznámky
promise
Pokud objekt nemá žádný přidružený asynchronní stav, tato metoda vyvolá future_error, který má kód no_state
chyby .
Pokud set_exception
, set_exception_at_thread_exit, set_value nebo set_value_at_thread_exit již byl volán pro promise
objekt, který má stejný přidružený asynchronní stav, tato metoda vyvolá future_error
kód chyby promise_already_satisfied
.
V důsledku této metody se odblokují všechna vlákna blokovaná v přidruženém asynchronním stavu.
promise::set_exception_at_thread_exit
Atomicky nastaví výsledek této promise
události tak, aby indikoval výjimku, a to až po zničení všech objektů místních vláken v aktuálním vlákně (obvykle při ukončení vlákna).
void set_exception_at_thread_exit(exception_ptr Exc);
Parametry
Exc
Výsledek výjimky exception_ptr , který je uložen touto metodou.
Poznámky
Pokud objekt příslibu nemá žádný přidružený asynchronní stav, tato metoda vyvolá future_error , který má kód no_state
chyby .
Pokud set_exception, , set_exception_at_thread_exit
set_value nebo set_value_at_thread_exit již byl volán pro promise
objekt, který má stejný přidružený asynchronní stav, tato metoda vyvolá future_error
kód chyby promise_already_satisfied
.
Na rozdíl od set_exception tato metoda nenastaví přidružený asynchronní stav tak, aby byl připravený až po zničení všech objektů místních vláken v aktuálním vlákně. Vlákna blokovaná v přidruženém asynchronním stavu se obvykle odblokují, dokud se aktuální vlákno neukončí.
promise::set_value
Atomicky ukládá hodnotu jako výsledek tohoto promise
objektu a nastaví přidružený asynchronní stav připravený.
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
Hodnota, která se má uložit jako výsledek.
Poznámky
promise
Pokud objekt nemá žádný přidružený asynchronní stav, tato metoda vyvolá future_error, který má kód no_state
chyby .
Pokud set_exception, set_exception_at_thread_exit nebo set_value
set_value_at_thread_exit již byl volán pro promise
objekt, který má stejný přidružený asynchronní stav, tato metoda vyvolá future_error
kód chyby promise_already_satisfied
.
V důsledku této metody se odblokují všechna vlákna blokovaná v přidruženém asynchronním stavu.
První metoda také vyvolá výjimku, která je vyvolána při val je zkopírován do přidruženého asynchronního stavu. V této situaci není přidružený asynchronní stav nastavený tak, aby byl připravený.
Druhá metoda také vyvolá všechny výjimky, které je vyvolány při Val je přesunut do přidruženého asynchronního stavu. V této situaci není přidružený asynchronní stav nastavený tak, aby byl připravený.
Pro částečnou specializaci promise<Ty&>
se uložená hodnota projeví odkazem na hodnotu Val.
Pro specializaci promise<void>
neexistuje žádná uložená hodnota.
promise::set_value_at_thread_exit
Atomicky ukládá hodnotu jako výsledek tohoto promise
objektu.
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
Hodnota, která se má uložit jako výsledek.
Poznámky
Pokud objekt příslibu nemá žádný přidružený asynchronní stav, tato metoda vyvolá future_error , který má kód no_state
chyby .
Pokud set_exception, set_exception_at_thread_exit, set_value nebo set_value_at_thread_exit
již byl volán pro promise
objekt, který má stejný přidružený asynchronní stav, tato metoda vyvolá future_error
kód chyby promise_already_satisfied
.
Na rozdíl od set_value
přidruženého asynchronního stavu není nastavený tak, aby byl připraven, dokud nebudou zničeny všechny objekty thread-local v aktuálním vlákně. Vlákna blokovaná v přidruženém asynchronním stavu se obvykle odblokují, dokud se aktuální vlákno neukončí.
První metoda také vyvolá výjimku, která je vyvolána při val je zkopírován do přidruženého asynchronního stavu.
Druhá metoda také vyvolá všechny výjimky, které je vyvolány při Val je přesunut do přidruženého asynchronního stavu.
Pro částečnou specializaci promise<Ty&>
je uložená hodnota efektivně odkazem na hodnotu Val.
Pro specializaci promise<void>
neexistuje žádná uložená hodnota.
promise::swap
Vymění přidružený asynchronní stav tohoto objektu příslibu s objektem zadaného objektu.
void swap(promise& Other) noexcept;
Parametry
Další
Objekt promise
.