我有一个需要推出大量期货的计划;具体而言,超过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 :: max()'”? –
Casey
2015-02-05 22:24:38
是的,谢谢! – 2015-02-06 01:54:26