2017-08-14 3 views
0

In Threading Building Blocks (TBB), wenn ich 2 Aufgabenplaner im selben Bereich initialisieren, wird das Argument der zweiten Initialisierung ignoriert, sofern das Argument der ersten Initialisierung nicht zurückgestellt wird. Um Konflikte zu vermeiden, möchte ich herausfinden, ob ein Taskplaner früher in meinem Programm initialisiert wurde. Gibt es einen Weg, es zu tun? Wenn ja, was war das Argument dafür?Gibt es in TBB eine Möglichkeit, herauszufinden, ob es einen vorhandenen Taskplaner gibt?

Antwort

2

Sie können die Funktionen tbb::this_task_arena::current_thread_index() und tbb::this_task_arena::max_concurrency() in Betracht ziehen.

Die Funktion tbb::this_task_arena::current_thread_index() gibt "tbb::task_arena::not_initialized zurück, wenn der Thread den Aufgabenplaner noch nicht initialisiert hat." (documentation link).

Wenn der Taskplaner bereits initialisiert ist, können Sie die angeforderte Anzahl von Threads mit der Funktion tbb::this_task_arena::max_concurrency() abrufen. Sie können jedoch nicht die Stapelgröße abrufen, die während der vorherigen Initialisierung des Task-Schedulers verwendet wurde.

Verwandte Themen