L'exemple suivant est tiré d'un C++ async tutorial:Comment utiliser un avenir sans l'attendre?
#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;
}
Comment puis-je utiliser le résultat d'un future
sans attendre pour cela? -À-dire que je voudrais faire quelque chose comme ceci:
int sum = 0;
for(auto &e : futures) { sum += someLengthyCalculation(e.get()); }
je pourrais passer une référence à la future
-someLengthyCalculation
, mais à un moment je dois appeler get
pour récupérer la valeur, je ne sait donc comment l'écrire sans attendre que le premier élément soit terminé, avant que le prochain puisse commencer à faire la somme.
Vous cherchez quelque chose comme '' then' et when_all' ou 'when_any' continuations ? – kreuzerkrieg