如何与英特尔 TBB 并行运行一个功能两次?

Il'*_*nin 3 c++ parallel-processing asynchronous stl tbb

我有一个函数需要使用不同的数据参数运行两次。此功能需要很长时间才能运行,并且会执行繁重的计算工作。

我如何做到这一点,使用哪种 TBB 机制?或者甚至不是TBB,如果我可以用STL做到这一点,请给我一个例子。

更新:

例如,我有一个函数,它将图像作为参数并对其进行一些处理:

int Compute(cv::Mat I)
{

    /*    computations    */

    return 0;
}
void callf(cv::Mat I1, cv::Mat I2)
{
    // make call of this functions parallel
    Compute(I1);
    Compute(I2);
}
Run Code Online (Sandbox Code Playgroud)

Ant*_*ton 5

您可以使用tbb::task_grouptbb::parallel_invoke结合 lambda 函数,如下所示:

void callf(cv::Mat I1, cv::Mat I2)
{
    // make call of this functions parallel
    tbb::parallel_invoke(
        [&]{ Compute(I1); },
        [&]{ Compute(I2); }
    );
}
Run Code Online (Sandbox Code Playgroud)