Sdílet prostřednictvím


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

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

Pokud set_exception, , set_exception_at_thread_exitset_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_statechyby .

Pokud set_exception, set_exception_at_thread_exit nebo set_valueset_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_statechyby .

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_valuepř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 .

Viz také

Referenční informace k souborům hlaviček