次の例は、C++ async tutorialから取られる:未来をそれを待たずに使う方法?
#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;
}
は、どのように私はそれを待たずにfuture
の結果を使用できますか?つまり、私はこのような何かやりたい:
int sum = 0;
for(auto &e : futures) { sum += someLengthyCalculation(e.get()); }
を私はsomeLengthyCalculation
にfuture
への参照を渡すことができますが、いくつかの点で私は値を取得するためにget
を呼び出す必要があり、したがって、私はそれを記述する方法を知りません最初の要素が完了するのを待つことなく、次の要素が合計を開始できるようになります。
あなたは 'then'と' when_all'または 'when_any'継続のような何かを探しています? – kreuzerkrieg