Poniższy przykład pochodzi z C++ async tutorial:Jak wykorzystać przyszłość, nie czekając na nią?
#include <future>
#include <iostream>
#include <vector>
int twice(int m) { return 2 * m; }
int main() {
std::vector<std::future<int>> futures;
for(int i = 0; i < 10; ++i) { futures.push_back (std::async(twice, i)); }
//retrive and print the value stored in the future
for(auto &e : futures) { std::cout << e.get() << std::endl; }
return 0;
}
Jak mogę wykorzystać jego wynik future
nie czekając na niego? Tzn chciałbym zrobić coś takiego:
int sum = 0;
for(auto &e : futures) { sum += someLengthyCalculation(e.get()); }
mogę przekazać referencję do future
do someLengthyCalculation
, ale w pewnym momencie muszę zadzwonić get
pobrać wartość, więc nie wiem jak to napisać bez czekania na zakończenie pierwszego elementu, zanim następny będzie mógł rozpocząć sumowanie.
Szukasz czegoś podobnego 'then' i' when_all' lub 'when_any' kontynuacje ? – kreuzerkrieg