2

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

代码类似于:

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

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

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

我尝试过使用 task_group。有没有其他可用的方法?

4

2 回答 2

7

有很多方法可以并行运行任何并行算法,您只需在您选择的另一个并行算法中运行它。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_pipeline,parallel_for_each或 raw low-level tbb::task

于 2017-08-31T16:28:11.340 回答
1

您可以将它们分别放在一个std::thread中,然后进行连接。另请参阅

于 2017-08-31T08:46:50.560 回答