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

C++ How can I run three diffrent parallel_for functions at once apart from using tbb::task_group?

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

代码类似于:

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

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

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

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

您可以将它们每个都放在一个 std::thread and make a join afterwards. See also also 中。

有很多方法可以运行任何并行算法,您只需要运行它在您选择的另一个并行算法中。 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