【发布时间】:2015-02-05 21:55:00
【问题描述】:
我有一个程序需要启动大量期货;具体来说,超过size_t。拥有许多期货的正常方法是将它们放在一个容器中,但由于它们太多,我将不得不移除成品。程序需要计算并行的新行数。
这就是我想为n>size_t工作的:
vector<future<int>> vf;
for(size_t i=0; i<n;++i){
vf.emplace_back(async([&](){ return count_lines(part_of_an_array);});
}
double cnt=0;
for(auto i:vf) cnt+=i;
我想到的一种方法是保留vector<char> busy_f(vector<bool> 可能不是线程安全的)。 count_lines 开始时 --> busy_f[i_future]=0,以及何时结束 --> busy_f[i_future]=1。
有更快的方法吗?
【问题讨论】:
-
size_t不是数字,而是类型。你的意思是“超过std::numeric_limits<size_t>::max()”吗?
标签: c++11 asynchronous containers bigdata future