shared_future-Klasse
Beschreibt ein asynchrones Rückgabeobjekt. Im Gegensatz zu einem zukünftigen Objekt, kann ein asynchroner Anbieter beliebig vielen shared_future
-Objekten zugeordnet werden.
Syntax
template <class Ty>
class shared_future;
Hinweise
Rufen Sie keine anderen Methoden als valid
, operator=
und den Destruktor für ein shared_future
Objekt auf, das leer ist.
shared_future
Objekte werden nicht synchronisiert. Aufrufen von Methoden für das gleiche Objekt von mehreren Threads führt zu einem Datenrace mit unvorhersehbaren Ergebnissen.
Member
Öffentliche Konstruktoren
Name | Beschreibung |
---|---|
shared_future | Erstellt ein shared_future -Objekt. |
Öffentliche Methoden
Name | Beschreibung |
---|---|
get | Ruft das Ergebnis ab, das im zugeordneten asynchronen Zustand gespeichert ist. |
gültig | Gibt an, ob das Objekt nicht leer ist. |
wait | Blockiert den aktuellen Thread, bis der zugeordnete asynchrone Zustandbereit ist. |
wait_for | Blockiert, bis der zugeordnete asynchrone Zustand bereit ist, oder bis die angegebene Zeit verstrichen ist. |
wait_until | Blockiert, bis der zugeordnete asynchrone Zustand bereit ist, oder bis ein angegebener Zeitpunkt erreicht ist. |
Öffentliche Operatoren
Name | Beschreibung |
---|---|
shared_future::operator= | Weist einen neuen zugeordneten asynchronen Zustand zu. |
Anforderungen
Header:<future>
Namespace: std
shared_future::get
Ruft das Ergebnis ab, das im zugeordneten asynchronen Zustand gespeichert ist.
const Ty& get() const;
Ty& get() const;
void get() const;
Hinweise
Wenn das Ergebnis eine Ausnahme ist, wird es erneut von der Methode ausgelöst. Andernfalls wird das Ergebnis zurückgegeben.
Bevor sie das Ergebnis abruf, blockiert diese Methode den aktuellen Thread, bis der zugeordnete asynchrone Zustand bereit ist.
Für die Teilspezialisierung shared_future<Ty&>
ist der gespeicherte Wert praktisch ein Verweis auf das Objekt, das dem asynchronen Anbieter als Rückgabewert übergeben wurde.
Weil für die Spezialisierung shared_future<void>
kein gespeicherten Wert existiert, gibt die Methode void
zurück.
shared_future::operator=
Überträgt einen zugeordneten asynchronen Zustand aus einem angegebenen Objekt.
shared_future& operator=(shared_future&& Right) noexcept;
shared_future& operator=(const shared_future& Right);
Parameter
Right
Ein shared_future
-Objekt.
Rückgabewert
*this
Bemerkungen
Für den ersten Operator verfügt Right nach dem Vorgang nicht mehr über einen zugeordneten asynchronen Zustand.
Für die zweite Methode behält Right den zugeordneten asynchronen Zustand bei.
shared_future::shared_future-Konstruktor
Erstellt ein shared_future
-Objekt.
shared_future() noexcept;
shared_future(future<Ty>&& Right) noexcept;
shared_future(shared_future&& Right) noexcept;
shared_future(const shared_future& Right);
Parameter
Right
Ein zukünftiges oder shared_future
-Objekt.
Hinweise
Der erste Konstruktor erstellt ein shared_future
-Objekt, das über keinen zugeordneten asynchronen Zustand verfügt.
Die zweiten und dritten Konstruktoren erstellen ein shared_future
Objekt und übertragen den zugeordneten asynchronen Zustand von Rechts. Rechts verfügt nicht mehr über einen zugeordneten asynchronen Zustand.
Der vierte Konstruktor erstellt ein shared_future
Objekt, das denselben asynchronen Zustand wie Right aufweist.
shared_future::valid
Gibt an, ob das Objekt einen zugeordneten asynchronen Zustand hat.
bool valid() noexcept;
Rückgabewert
true
, wenn das Objekt einen zugeordneten asynchronen Zustand hat; andernfalls false
.
shared_future::wait
Blockiert den aktuellen Thread, bis der zugeordnete asynchrone Zustandbereit ist.
void wait() const;
Hinweise
Ein zugeordneter asynchroner Zustand ist nur dann bereit, wenn sein asynchroner Anbieter einen Rückgabewert oder eine Ausnahme gespeichert hat.
shared_future::wait_for
Blockiert den aktuellen Thread, bis der zugeordnete asynchrone Zustand bereit oder eine angegebene Zeit verstrichen ist.
template <class Rep, class Period>
future_status wait_for(
const chrono::duration<Rep, Period>& Rel_time) const;
Parameter
Rel_time
Ein chrono::duration-Objekt, das ein maximales Zeitintervall angibt, das der Thread blockiert.
Rückgabewert
Ein future_status, das den Grund für die Rückgabe angibt.
Hinweise
Ein zugeordneter asynchroner Zustand ist nur dann bereit, wenn sein asynchroner Anbieter einen Rückgabewert oder eine Ausnahme gespeichert hat.
shared_future::wait_until
Blockiert den aktuelle Thread, bis der zugeordnete asynchrone Zustand bereit oder ein angegebener Zeitpunkt verstrichen ist.
template <class Clock, class Duration>
future_status wait_until(
const chrono::time_point<Clock, Duration>& Abs_time) const;
Parameter
Abs_time
Ein chrono::time_point-Objekt, das eine Zeit angibt, nach der der Thread die Blockierung aufheben kann.
Rückgabewert
Ein future_status, das den Grund für die Rückgabe angibt.
Hinweise
Ein zugeordneter asynchroner Zustand ist nur dann bereit, wenn sein asynchroner Anbieter einen Rückgabewert oder eine Ausnahme gespeichert hat.