| 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::futureObjekt 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 demstd::futuredes 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).
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 *thisOriginal: returns a shared_future referring to the result associated to *thisThe 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) | |
Beispiel
#include <iostream>
#include <future>
#include <thread>
int main()
{
// future from a packaged_task
std::packaged_task<int()> task([](){ return 7; }); // wrap the function
std::future<int> f1 = task.get_future(); // get a future
std::thread(std::move(task)).detach(); // launch on a thread
// future from an async()
std::future<int> f2 = std::async(std::launch::async, [](){ return 8; });
// future from a promise
std::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
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) |