在使用packaged_task時,我收集了向量中的所有期貨。之後,我用get()推回未來的值。但是,我得到了錯誤的答案。誰能幫忙?非常感謝你。如何獲得未來的價值?
#define BOOST_THREAD_PROVIDES_FUTURE
#include <boost/thread/future.hpp>
#include <vector>
#include <iostream>
using namespace std;
vector<int> subFun(int n) {
vector<int> a{ 2 * n, 3 * n };
return a;
}
int main() {
vector<boost::future<vector<int>>> g;
vector<vector<int>> x(10, vector<int>(2));
int i;
for (i = 0; i < 10; i++) {
boost::packaged_task<vector<int>> task{ boost::bind(&subFun, i) };
g.push_back(task.get_future());
boost::thread t{ std::move(task) };
}
for (auto& m : g) {
x.push_back(m.get());
}
cout << x[3][0] << endl;//should be 6, now is 0
return 0;
}
你爲什麼不使用'STD :: promise'?順便說一句,這些現在都在標準庫中。而且,標籤C++ –
想通了! –