2012-04-11 5 views
1

Wenn Arbeit mit Aufgaben, zum Beispiel mit diesem:über TBB Aufgaben

class MyTask: public tbb::task { 
    private: 
    int x; 
    private: 
    void DoSomething(...){...} // Invoked only inside execute 
    void DoMore(...){...} // Invoked only inside execute 
    public: 
    MyTasks(...){...} 
    tbb::task* execute(){...} 
}; 

Sobald die Aufgabe ausgeführt wird, ist es möglich, gleichzeitig DoSomething() oder DoMore() oder diese Methoden nur aufgerufen werden können, auszuführen der Thread, der die Ausführung der Aufgabe gestartet hat ?.

Ich lese, dass TBB Job stiehlt, aber was es stiehlt? Stehlen sie ein Stück Daten, berechnen es und geben das Ergebnis an den Hauptthread zurück oder ist es möglich, dass das Stehlen die privaten Methoden ausführt?

Entschuldigung Wenn meine Frage nicht klar ist!

Danke.

Antwort

2

TBB stiehlt eine Aufgabe, d. H. Eine Instanz einer Klasse, die von tbb::task abgeleitet ist. Die Methode execute() der Task wird dann aufgerufen. Diese Methode wird von einem einzelnen Thread ausgeführt, kann jedoch neue Tasks erzeugen, die in den lokalen Taskpool des Threads gestellt werden und von anderen Threads gestohlen werden können.

In Ihrem Fall werden die privaten Methoden, die nur von execute() aufgerufen werden, nicht gleichzeitig ausgeführt.

+0

Thaaaaaanks ein loooot !!! –

Verwandte Themen