2017-08-14 2 views
0

Dans Threading Building Blocks (TBB), si je 2 initialiser la tâche ordonnanceurs dans le même champ, l'argument de la deuxième initialisation est ignorée sauf si l'argument de la première initialisation est reportée. Afin d'éviter tout conflit, je voudrais savoir si un planificateur de tâches a été initialisé plus tôt dans mon programme. Y a-t-il un moyen de le faire? Si oui, quel en était l'argument?Dans TBB, existe-t-il un moyen de savoir s'il existe un planificateur de tâches existant?

Répondre

2

Vous pouvez envisager tbb::this_task_arena::current_thread_index() et tbb::this_task_arena::max_concurrency() fonctions. La fonction renvoie la valeur tbb::task_arena::not_initialized si le thread n'a pas encore initialisé le planificateur de tâches. (documentation link).

Si le planificateur de tâches est déjà initialisé, vous pouvez obtenir le nombre requis de threads avec la fonction tbb::this_task_arena::max_concurrency(). Cependant, vous ne pouvez pas obtenir la taille de la pile utilisée lors de l'initialisation du planificateur de tâches précédent.