C ++除了使用tbb :: task_group之外,如何同时运行三个不同的parallel_for函数?

时间:2017-08-31 08:37:23

标签: c++ multithreading tbb parallel-for

我有代码,我必须同时运行parallel_for(彼此独立)。

代码类似于:

tbb::parallel_for(range1,func1());//first

tbb::parallel_for(range2,func2());//second

tbb::parallel_for(range3,func3());//third

我尝试过使用task_group。还有其他方法吗?

2 个答案:

答案 0 :(得分:6)

有许多方法可以并行运行任何并行算法,您只需要在您选择的另一个并行算法中运行它。 task_group只是一个例子。对您来说最简单的方法是使用parallel_invoke

tbb::parallel_invoke([]{
        tbb::parallel_for(range1,func1);//first
    }, []{
        tbb::parallel_for(range2,func2);//second
    }, []{
        tbb::parallel_for(range3,func3);//third
    }
);

但是可以选择在范围和函数指针数组上使用另一个parallel_for,或者使用parallel_pipelineparallel_for_each或原始低级tbb::task

答案 1 :(得分:1)

您可以将它们分别放在一个std::thread中,然后再制作join。另请参阅also