Freigeben über


<future>

Fügen Sie den Standardheader in die Zukunft> ein<, um Klassenvorlagen und unterstützende Vorlagen zu definieren, die das Ausführen einer Funktion – möglicherweise in einem separaten Thread – vereinfachen und das Ergebnis abrufen. Das Ergebnis zeigt entweder den Wert, der von der Funktion zurückgegeben wird oder eine Ausnahme, die von der Funktion ausgegeben, aber nicht in der Funktion abgefangen wird.

Für diesen Header wird "Concurrency Runtime (ConcRT)" verwendet, sodass er zusammen mit anderen ConcRT-Mechanismen verwendet werden kann. Weitere Informationen finden Sie unter Concurrency Runtime.

Syntax

#include <future>

Bemerkungen

Hinweis

In Code, der mithilfe von /clr kompiliert wird, wird dieser Header blockiert.

In einem asynchronen Anbieter wird das Ergebnis eines Funktionsaufrufs gespeichert. Ein asynchrones Rückgabeobjekt wird zum Abrufen des Ergebnisses eines Funktionsaufrufs verwendet. Ein asynchroner zugeordneter Zustand ermöglicht die Kommunikation zwischen einem asynchronen Anbieter und mindestens einem asynchronen Rückgabeobjekt.

Mit einem Programm werden nicht direkt zugeordnete asynchrone Zustandsobjekte erstellt. Mit dem Programm wird ein asynchroner Anbieter erstellt, wenn einer benötigt wird. Davon wird ein asynchrones Rückgabeobjekt erstellt, das dem Anbieter den asynchronen zugeordneten Zustand freigibt. Von asynchronen Anbietern und asynchronen Rückgabeobjekten werden Objekte zurückgegeben, die den freigegebenen zugeordneten asynchronen Zustand enthalten. Wenn das letzte Objekt, das den asynchronen zugeordneten Zustand verweist, diesen freigibt, wird das Objekt, das den asynchronen zugeordneten Zustand enthält, zerstört.

Ein asynchroner Anbieter oder ein asynchrones Rückgabeobjekt, das keinen verknüpften asynchronen Zustand aufweist, ist leer.

Ein zugeordneter asynchroner Zustand ist nur dann bereit, wenn sein asynchroner Anbieter einen Rückgabewert oder eine Ausnahme gespeichert hat.

Die Vorlagenfunktion async und die Klassenvorlagen promise sind packaged_task asynchrone Anbieter. Die Klassenvorlagen future und shared_future beschreiben asynchrone Rückgabeobjekte.

Jede der Klassenvorlagen promise, futureund shared_future verfügt über eine Spezialisierung für den Typ void und eine Teilspezialisierung zum Speichern und Abrufen eines Werts nach Verweis. Diese Spezialisierungen unterscheiden sich von der primären Vorlage nur durch die Signaturen und die Semantik der Funktionen, die den zurückgegebenen Wert speichern und abrufen.

Die Klassenvorlagen future und shared_future niemals in ihren Destruktoren blockieren, außer in einem Fall, der aus Gründen der Abwärtskompatibilität erhalten bleibt: Im Gegensatz zu allen anderen Zukünftigen wird für eine futureaufgabe, die shared_futuremit einer Aufgabe gestartet wurde std::async, blockiert der Destruktor, wenn die Aufgabe noch nicht abgeschlossen wurde. Das heißt, er blockiert, wenn dieser Thread noch nicht aufgerufen .get() wurde oder .wait() und die Aufgabe noch ausgeführt wird. Der folgende Hinweis zur Benutzerfreundlichkeit wurde der Beschreibung std::async im Entwurfsstandard hinzugefügt: "[Hinweis: Wenn eine Zukunft von std::async außerhalb des lokalen Bereichs verschoben wird, muss ein anderer Code, der die Zukunft verwendet, beachten, dass der zukünftige Destruktor für den freigegebenen Zustand blockiert werden kann, um bereit zu werden.—Hinweis]" In allen anderen Fällen, future und Destruktoren sind erforderlich und shared_future werden garantiert niemals blockiert.

Member

Klassen

name Beschreibung
future-Klasse Beschreibt ein asynchrones Rückgabeobjekt.
future_error-Klasse Beschreibt ein Ausnahmeobjekt, das von Methoden des future-Objekte verwaltenden Typs ausgelöst werden.
packaged_task-Klasse Beschreibt einen asynchronen Anbieter, der ein Aufrufwrapper ist und dessen Aufrufsignatur Ty(ArgTypes...) ist. Der zugehörige asynchrone Zustand enthält zusätzlich zum potentiellen Ergebnisses eine Kopie des aufrufbaren Objekts .
promise-Klasse Beschreibt einen asynchronen Anbieter.
shared_future-Klasse Beschreibt ein asynchrones Rückgabeobjekt. Im Gegensatz zu einem future-Objekt, kann ein asynchroner Anbieter beliebig vielen shared_future-Objekten zugeordnet werden.

Strukturen

Name Beschreibung
is_error_code_enum-Struktur Spezialisierungen, die angeben, dass future_errc für das Speichern von error_code geeignet ist.
uses_allocator-Struktur Spezialisierung, die immer "True" ist.

Funktionen

Name Beschreibung
async Stellt einen asynchronen Anbieter dar.
future_category Gibt einen Verweis auf das error_category-Objekt zurück, das Fehler bestimmt, die future-Objekten zugeordnet werden.
make_error_code Erstellt ein error_code-Element, das das error_category-Objekt aufweist, das future Fehler bestimmt.
make_error_condition Erstellt ein error_condition-Element, das das error_category-Objekt aufweist, das future Fehler bestimmt.
swap Tauscht den zugeordneten Zustand eines asynchronen promise-Objekts mit dem des anderen aus.

Enumerationen

Name Beschreibung
future_errc Liefert symbolische Namen für die von der future_error-Klasse ausgegeben Fehler.
future_status Liefert symbolische Namen für die Gründe, aus denen eine zeitgesteuerte Wartefunktion eine Rückgabe ausführen kann.
abschießen Stellt einen Bitmaskentyp dar, mit dem die möglichen Modi für die Vorlagenfunktion async beschrieben werden.

Siehe auch

Headerdateienreferenz