2016-05-12 15 views
2

Ich habe eine Funktion, die ich zweimal mit verschiedenen Datenparametern ausführen muss. Diese Funktion benötigt viel Zeit, um ausgeführt zu werden.Wie wird eine Funktion zweimal parallel mit Intel TBB ausgeführt?

Wie kann ich das mit welchem ​​TBB-Mechanismus? Oder nicht einmal TBB, wenn ich das mit STL machen kann, gib mir bitte ein Beispiel.

UPD:

Zum Beispiel habe ich eine Funktion, die als Parameter Bild nimmt und führt einige Verarbeitung, um es:

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

Meinst du Vorlagen? Ohne zu wissen, was genau Sie vorhaben, wäre es schwierig, irgendeine STL-Datenstruktur vorzuschlagen. –

+0

Also meinst du Threading? Vielleicht werfen Sie einen Blick auf [std :: thread] (http://en.cppreference.com/w/cpp/thread) –

Antwort

4

Sie tbb::task_group oder tbb::parallel_invoke in Verbindung mit Lambda-Funktionen verwenden können, wie hier:

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