<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
, future
und 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 future
aufgabe, die shared_future
mit 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. |