Freigeben über


promise-Klasse

Beschreibt einen asynchronen Anbieter.

Syntax

template <class Ty>
class promise;

Member

Öffentliche Konstruktoren

Name Beschreibung
Versprechen Erstellt ein promise-Objekt.

Öffentliche Methoden

Name Beschreibung
get_future Gibt eine dieser Zusage zugeordnete Zukunft zurück.
set_exception Legt das Ergebnis dieser Zusage atomisch zum Angeben einer Ausnahme fest.
set_exception_at_thread_exit Legt das Ergebnis dieser Zusage zum Angeben einer Ausnahme atomisch fest, und stellt die Benachrichtigung nur zu, nachdem alle Objekte eines lokalen Threads im aktuellen Thread zerstört wurden (normalerweise zur Threadbeendigung).
set_value Legt das Ergebnis dieser Zusage zum Angeben eines Werts atomisch fest.
set_value_at_thread_exit Legt das Ergebnis dieser Zusage zum Angeben eines Werts atomisch fest, und stellt die Benachrichtigung nur zu, nachdem alle Objekte eines lokalen Threads im aktuellen Thread zerstört wurden (normalerweise zur Threadbeendigung).
swap Tauscht den zugeordneten asynchronen Zustand dieser Zusage mit dem eines angegebenen Zusageobjekts aus.

Öffentliche Operatoren

Name Beschreibung
promise::operator= Zuweisung des Freigabestatus dieses Zusageobjekts.

Vererbungshierarchie

Versprechen

Anforderungen

Header:<future>

Namespace: std

promise::get_future

Gibt ein Zukunft-Objekt zurück, das über den gleichen zugeordneten asynchronen Zustand wie die Zusage verfügt.

future<Ty> get_future();

Hinweise

Wenn das Zusageobjekt leer ist, löst diese Methode future_error mit einem error_code von no_state aus.

Wenn diese Methode bereits für ein Zusageobjekt mit dem gleichen zugeordneten asynchronen Zustand aufgerufen wurde, löst die Methode future_error mit error_code von future_already_retrieved aus.

promise::operator=

Überträgt den zugeordneten asynchronen Zustand aus einem angegebenen promise-Objekt.

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

Parameter

Andere
Ein promise-Objekt.

Rückgabewert

*this

Bemerkungen

Dieser Operator überträgt den zugeordneten asynchronen Zustand von Other. Nach der Übertragung ist Other leer.

promise::promise-Konstruktor

Erstellt ein promise-Objekt.

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

Parameter

Al
Eine Speicherbelegung. Weitere Informationen zu Allokatoren finden Sie unter <Allokatoren>.

Andere
Ein promise-Objekt.

Hinweise

Der erste Konstruktor erstellt ein leerespromise-Objekt.

Der zweite Konstruktor erstellt ein leeres promise Objekt und verwendet Al für die Speicherzuweisung.

Der dritte Konstruktor erstellt ein promise Objekt und überträgt den zugeordneten asynchronen Zustand von Other und lässt Other leer.

promise::set_exception

Es wird atomisch eine Ausnahme als Ergebnis dieses promise-Objekts gespeichert, und der entsprechende asynchrone Zustand wird auf fertig festgelegt.

void set_exception(exception_ptr Exc);

Parameter

Ohne
Ein exception_ptr, der von dieser Methode als Ausnahmeergebnis gespeichert ist.

Hinweise

Wenn das promise-Objekt über keinen zugeordneten asynchronen Zustand verfügt, löst diese Methode future_error mit einem Fehlercode von no_state aus.

Wenn set_exception, set_exception_at_thread_exit, set_value oder set_value_at_thread_exit bereits für ein promise-Objekt mit demselben zugeordneten asynchronen Zustand aufgerufen wurde, löst diese Methode future_error mit einem Fehlercode von promise_already_satisfied aus.

Aufgrund dieser Methode wird die Blockierung aller Threads, die auf dem zugeordneten asynchronen Zustand blockiert werden, aufgehoben.

promise::set_exception_at_thread_exit

Legt das Ergebnis von promise zum Angeben einer Ausnahme atomisch fest, und stellt die Benachrichtigung nur zu, nachdem alle Objekte eines lokalen Threads im aktuellen Thread zerstört wurden (normalerweise zur Threadbeendigung).

void set_exception_at_thread_exit(exception_ptr Exc);

Parameter

Ohne
Ein exception_ptr, der von dieser Methode als Ausnahmeergebnis gespeichert ist.

Hinweise

Wenn das Zusageobjekt über keinen zugeordneten asynchronen Zustand verfügt, löst diese Methode future_error mit einem Fehlercode von no_state aus.

Wenn , set_exceptionset_exception_at_thread_exit, set_value oder set_value_at_thread_exit bereits für ein promise-Objekt mit demselben zugeordneten asynchronen Zustand aufgerufen wurde, löst diese Methode future_error mit einem Fehlercode von promise_already_satisfied aus.

Im Gegensatz zu set_exception legt diese Methode den zugeordneten asynchronen Zustand erst so fest, dass er bereit ist, bis alle threadlokalen Objekte im aktuellen Thread zerstört wurden. In der Regel werden Threads, die für den zugeordneten asynchronen Zustand blockiert sind, erst aufgehoben, wenn der aktuelle Thread beendet wird.

promise::set_value

Es wird atomisch ein Wert als Ergebnis dieses promise-Objekts gespeichert, und der entsprechende asynchrone Zustand wird auf fertig festgelegt.

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();

Parameter

Val
Der als Ergebnis zu speichernde Wert.

Hinweise

Wenn das promise-Objekt über keinen zugeordneten asynchronen Zustand verfügt, löst diese Methode future_error mit einem Fehlercode von no_state aus.

Wenn set_exception, set_exception_at_thread_exit, set_value oder set_value_at_thread_exit bereits für ein promise-Objekt mit demselben zugeordneten asynchronen Zustand aufgerufen wurde, löst diese Methode future_error mit einem Fehlercode von promise_already_satisfied aus.

Aufgrund dieser Methode wird die Blockierung aller Threads, die auf dem zugeordneten asynchronen Zustand blockiert werden, aufgehoben.

Die erste Methode löst auch eine Ausnahme aus, die ausgelöst wird, wenn Val in den zugeordneten asynchronen Zustand kopiert wird. In diesem Fall ist der zugeordnete asynchrone Zustand nicht auf "Bereit" festgelegt.

Die zweite Methode löst auch eine Ausnahme aus, die ausgelöst wird, wenn Val in den zugeordneten asynchronen Zustand verschoben wird. In diesem Fall ist der zugeordnete asynchrone Zustand nicht auf "Bereit" festgelegt.

Für die Teilspezialisierung promise<Ty&>ist der gespeicherte Wert tatsächlich ein Verweis auf Val.

Für die Spezialisierung promise<void> ist kein gespeicherter Wert vorhanden.

promise::set_value_at_thread_exit

Speichert einen Wert atomisch als Ergebnis dieses promise-Objekts.

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();

Parameter

Val
Der als Ergebnis zu speichernde Wert.

Hinweise

Wenn das Zusageobjekt über keinen zugeordneten asynchronen Zustand verfügt, löst diese Methode future_error mit einem Fehlercode von no_state aus.

Wenn set_exception, set_exception_at_thread_exit, set_value oder set_value_at_thread_exit bereits für ein promise-Objekt mit demselben zugeordneten asynchronen Zustand aufgerufen wurde, löst diese Methode future_error mit einem Fehlercode von promise_already_satisfied aus.

Im Gegensatz zu set_value, der zugeordnete asynchrone Zustand ist erst bereit, nachdem alle threadlokalen Objekte im aktuellen Thread zerstört wurden. In der Regel werden Threads, die für den zugeordneten asynchronen Zustand blockiert sind, erst aufgehoben, wenn der aktuelle Thread beendet wird.

Die erste Methode löst auch eine Ausnahme aus, die ausgelöst wird, wenn Val in den zugeordneten asynchronen Zustand kopiert wird.

Die zweite Methode löst auch eine Ausnahme aus, die ausgelöst wird, wenn Val in den zugeordneten asynchronen Zustand verschoben wird.

Für die Teilspezialisierung promise<Ty&>ist der gespeicherte Wert effektiv ein Verweis auf Val.

Für die Spezialisierung promise<void> ist kein gespeicherter Wert vorhanden.

promise::swap

Tauscht den zugeordneten asynchronen Zustand dieses Zusageobjekts mit dem eines angegebenen Objekts aus.

void swap(promise& Other) noexcept;

Parameter

Andere
Ein promise-Objekt.

Siehe auch

Headerdateienreferenz