<future>
Schließen Sie den Standardheader <future> ein, um Vorlagenklassen und unterstützende Vorlagen zu definieren, die das Ausführen einer Funktion – möglicherweise in einem separaten Thread – und das Abrufen des Ergebnisses vereinfachen. 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 über ConcRT finden Sie unter Concurrency Runtime.
#include <future>
Hinweise
Hinweis
In Code, der mithilfe von /clr oder /clr:pure 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 stellt die Kommunikation zwischen einem asynchronen Anbieter und mindestens einem asynchronen Rückgabeobjekt bereit.
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, beschädigt.
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 Vorlagenklassen promise sowie packaged_task sind asynchrone Anbieter. Mit den Vorlagenklassen future und shared_future werden asynchrone Rückgabeobjekte beschrieben.
Jede der Vorlagenklassen promise, future und shared_future verfügt über eine Spezialisierung für den Typ void und eine teilweise Spezialisierung für das Speichern und Abrufen eines Werts über einen 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 Vorlagenklassen future und shared_future blockieren nie in den Destruktoren, außer in einem Fall, der für Abwärtskompatibilität beibehalten wird: Anders als bei allen anderen Zukunftsereignissen blockiert bei future oder dem letzten shared_future-Element, das einer Aufgabe angefügt wird, die mit std::async gestartet wird, der Destruktor, wenn die Aufgabe noch nicht abgeschlossen wurde. Das bedeutet, er blockiert, wenn .get() oder .wait() vom Thread noch nicht aufgerufen wurde und die Aufgabe noch ausgeführt wird. Der folgende Hinweis zur Nutzbarkeit wurde der Beschreibung von std::async im Normenentwurf hinzugefügt: "[Hinweis: Wenn eine von "std::async" erhaltene Zukunft außerhalb des lokalen Bereichs verschoben wird, muss beim Schreiben von anderem Code, bei dem die Zukunft verwendet wird, beachtet werden, dass der Destruktor de Zukunft möglicherweise blockiert, sodass der Freigabezustand in den Bereitschaftszustand wechseln kann – Ende des Hinweises]". In allen anderen Fällen sind future und shared_future-Destruktoren erforderlich und blockieren garantiert nie.
Member
Klassen
Name |
Beschreibung |
---|---|
Beschreibt ein asynchrones Rückgabeobjekt. |
|
Beschreibt ein Ausnahmeobjekt, das von Methoden des future-Objekte verwaltenden Typs ausgelöst werden. |
|
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 . |
|
Beschreibt einen asynchronen Anbieter. |
|
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 |
---|---|
Spezialisierungen, die angeben, dass future_errc für das Speichern von error_code geeignet ist. |
|
Spezialisierung, die immer "True" ist. |
Funktionen
Name |
Beschreibung |
---|---|
Stellt einen asynchronen Anbieter dar. |
|
Gibt einen Verweis auf das error_category-Objekt zurück, das Fehler bestimmt, die future-Objekten zugeordnet werden. |
|
Erstellt ein error_code-Element, das das error_category-Objekt aufweist, das future Fehler bestimmt. |
|
Erstellt ein error_condition-Element, das das error_category-Objekt aufweist, das future Fehler bestimmt. |
|
Tauscht den zugeordneten Zustand eines asynchronen promise-Objekts mit dem des anderen aus. |
Enumerationen
Name |
Beschreibung |
---|---|
Liefert symbolische Namen für die von der future_error-Klasse ausgegeben Fehler. |
|
Liefert symbolische Namen für die Gründe, aus denen eine zeitgesteuerte Wartefunktion eine Rückgabe ausführen kann. |
|
Stellt einen Bitmaskentyp dar, mit dem die möglichen Modi für die Vorlagenfunktion async beschrieben werden. |