c++11,for_each的并行化,改写模板

template <typename Iterator,typename Func>
void parallel_for_each(Iterator first,Iterator last,Func f)
{
unsigned long const length = std::distance(first,last);

if(!length)
	return;

unsigned long  const min_per_thread = 25;

if(length < (2 * min_per_thread))
	std::for_each(first,last,f);
else
{
	Iterator const mid_point = first + length/2;
	std::future<void> first_half = std::async(¶llel_for_each<Iterator,Func>,first,mid_point,f);
	parallel_for_each(mid_point,last,f);
	first_half.get();
}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值