c++程序设计--packaged_task例子

5.3.5.2 packaged_task

double accum(doublebeg,double*end,doubleinit)//计算[beg:end)中元素的和,计算的初始值是init
return accumulate(beg,end,init);
}

double comp2(vector<doubIe>&v)using Task_type=double(double*double*double);//任务的类型
packaged_task<Task_type>ptO{accum},
packaged_task<Task_type>pt1{accum};//打包任务(即accum)
future<double>fO{ptO.get_future()};//获取ptO的future
future<double>fl{pt1.get_future()};//获取pt1的future
double* first=&v[O];
threadt1{move(ptO),first,first+v.size()/20};//为pt0启动一个线程
threadt2{move(pt1),first+v.size()/2,first+v.size()0};//为ptl启动一个线程

return fO.get()+f1.get();
//获得结果

你可能感兴趣的:(c++)