下面的例子是從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()); }
我能傳遞給future
到someLengthyCalculation
的引用,但在某些時候,我要叫get
檢索值,因此,我不知道怎麼寫而不用等待第一個元素完成,然後下一個可以開始求和。
您是否在尋找像'then'和'when_all'或'when_any'延續? – kreuzerkrieg