2016-05-12 74 views
2

我有一個函數,我需要用不同的數據參數運行兩次。該功能需要很長時間才能運行,並且執行繁重的計算工作。如何與Intel TBB並行運行兩次函數?

我該怎麼做,用哪種TBB機制?或者甚至沒有TBB,如果我可以用STL來做到這一點,請給我一個例子。

UPD:

例如,我有一個函數,它作爲一個參數圖像和做一些處理以它:

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); 
} 
+0

你的意思是模板?不知道你想要做什麼,就很難建議任何STL數據結構。 –

+0

所以你的意思是線程?也許看看[std :: thread](http://en.cppreference.com/w/cpp/thread) –

回答

4

可以結合使用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); } 
    ); 
}