std::future
Aus cppreference.com
![]() | This page has been machine-translated from the English version of the wiki using Google Translate. The translation may contain errors and awkward wording. Hover over text to see the original version. You can help to fix errors and improve the translation. For instructions click here. |
definiert in Header <future> | ||
template<class T >class future; | (1) | (seit C++11) |
template<class T >class future<T&>; | (2) | (seit C++11) |
template<> class future<void>; | (3) | (seit C++11) |
Das Klassen-Template std::future
bietet einen Mechanismus, um auf das Ergebnis von asynchronen Operationen zuzugreifen
- Ein asynchroner Vorgang (erstellt über std::async, std::packaged_task oder std::promise) kann ein
std::future
Objekt einem Auslöser einer asynchronen Operation bereitstellen.
- Der Auslöser des asynchronen Vorgangs kann dann eine Vielzahl von Methoden zur Abfrage, zum Warten auf, oder zum Extrahieren eines Wertes aus
std::future
. Diese Methoden können blockieren, wenn die asynchrone Operation noch keinen Wert geliefert hat.
- Wenn der asynchrone Vorgang bereit ist, dem Auslöser ein Ergebnis bereitzustellen, kann es dies durch Änderung des gemeinsamen Zustands tun (z.B. std::promise::set_value), der mit dem
std::future
des Auslösers verbunden ist.
Beachten Sie, dass std::future
einen gemeinsamen Zustand referenziert, der nicht mit anderen asynchronen Rückgabeobjekten gemein ist (im Gegensatz zu std::shared_future).
Inhaltsverzeichnis |
[Bearbeiten]Member-Funktionen
baut das Zukunft Objekt Original: constructs the future object The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (öffentliche Elementfunktion) | |
zerstört sich das Zukunft Objekt Original: destructs the future object The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (öffentliche Elementfunktion) | |
bewegt das Zukunft Objekt Original: moves the future object The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (öffentliche Elementfunktion) | |
gibt eine shared_future Bezugnahme auf das Ergebnis zugeordnet *this Original: returns a shared_future referring to the result associated to *this The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (öffentliche Elementfunktion) | |
Zugriff auf das Ergebnis | |
gibt das Ergebnis Original: returns the result The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (öffentliche Elementfunktion) | |
Original: State The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. | |
überprüft, ob das Future einen shared State mit einem promise teilt. Original: checks if the future has shared state with a promise The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (öffentliche Elementfunktion) | |
wartet darauf dass das Ergebnis verfügbar wird Original: waits for the result to become available The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (öffentliche Elementfunktion) | |
waits for the result, returns if it is not available for the specified timeout duration (öffentliche Elementfunktion) | |
wartet auf das Ergebnis liefert, wenn es nicht verfügbar ist, bis spezifizierte Zeit erreicht worden ist Original: waits for the result, returns if it is not available until specified time point has been reached The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (öffentliche Elementfunktion) |
[Bearbeiten]Beispiel
#include <iostream>#include <future>#include <thread> int main(){// future from a packaged_taskstd::packaged_task<int()> task([](){return7;});// wrap the function std::future<int> f1 = task.get_future();// get a futurestd::thread(std::move(task)).detach();// launch on a thread // future from an async() std::future<int> f2 =std::async(std::launch::async, [](){return8;}); // future from a promisestd::promise<int> p; std::future<int> f3 = p.get_future();std::thread([](std::promise<int>& p){ p.set_value(9);}, std::ref(p)).detach(); std::cout<<"Waiting..."; f1.wait(); f2.wait(); f3.wait();std::cout<<"Done!\nResults are: "<< f1.get()<<' '<< f2.get()<<' '<< f3.get()<<'\n';}
Output:
Waiting...Done! Results are: 7 8 9
[Bearbeiten]Siehe auch
(C++11) | betreibt eine Funktion asynchron (möglicherweise in einem neuen Thread) und gibt einen std::future, die das Ergebnis halten wird Original: runs a function asynchronously (potentially in a new thread) and returns a std::future that will hold the result The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (Funktions-Template) |
(C++11) | wartet auf einen Wert (eventuell von anderen Futures verwiesen wird), die asynchron ist Original: waits for a value (possibly referenced by other futures) that is set asynchronously The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (Klassen-Template) |