Intel TBB vs Boost

J'ai ma nouvelle application j'ai flexibilité pour décider de l'utilisation de la bibliothèque pour le multi-threading. Jusqu'à présent j'ai été en utilisant pthread. Maintenant, voulez explorer la croix-plate-forme de bibliothèque. J'ai zéro dans sur TBB et Boost. Je ne comprends pas quel est l'avantage de TBB plus de Boost.
Je suis en train d'en savoir d'avantage de TBB plus de Boost:
TBB Extraits de wiki "à la Place de la bibliothèque résumés accès à plusieurs processeurs en permettant les opérations à être traités comme des "tâches", qui sont répartis entre les différents cœurs de manière dynamique par la bibliothèque run-time engine, et par l'automatisation de l'utilisation efficace de la mémoire cache. Un TBB programme crée, synchronise et détruit les graphes de tâches dépendantes selon des algorithmes,"

mais ne le filetage de la bibliothèque même besoin de s'inquiéter à propos de la répartition des threads noyaux. N'est-ce pas un travail de système d'exploitation?
Alors, quel est le réel Avantage de l'utilisation de la TBB plus de Boost?

  • Vous pouvez définir fil des affinités à l'aide de pthread ainsi (par exemple, en utilisant la pthread_setaffinity_np appel)
  • oui sont à droite. mon point est de savoir comment une grande partie de l'utilisation pratique est de faire que la. En tant que programmeur, vous pourriez voulez pas d'avoir un thread planification des tâches à réaliser à votre demande. Alors pourquoi TBB le montre comme une différenciation sur les autres de la bibliothèque?
  • il est un fait observable avantage de bien choisir les cœurs pour les applications. Prenons l'exemple simple d'une tige de bûcheron. Un thread reçoit des données à partir d'un réseau d'interfaces et le met sur un anneau; l'autre thread lit à partir de l'anneau et les écrit dans un fichier (ce qui aide à soulager la congestion que vous voyez si vous utilisez l'outil tcpdump). Dans ce cas, sur un système biprocesseur, réglage des affinités sur le même PROCESSEUR est observable plus efficace. Si vous avez l'hyperthreading est activé, le cœur virtuel paire est beaucoup plus rapide. Cependant, cela nécessite beaucoup de microgestion, qui TBB ne l'exige pas.
  • merci pour l'explication agréable. Je suis d'accord il y a certains cas dans lesquels vous souhaitez définir l'affinité de votre fil. Mais comment fait-TBB permettra de faire la gestion de votre(programmeurs) nom? En d'autres termes programmeur consacrer la TBB. La même chose peut être fait sur un coup de pouce/pthread aussi! Grande question est de savoir quelles sont les scénario lors de la TBB fait mieux thread planification de système d'Exploitation?
  • Même si vous utilisez pthread_setaffinity_np() pour correctement définir l'affinité du fil, il n'y a aucune garantie que le fil va s'exécuter dans l'entrelacement de la manière, surtout dans multiprogramming environnement.. je vais encore dire qu'il peut vous donner certains avantages, mais muni d'un capuchon.
  • Vous devez représenter le problème à l'aide de leurs primitives. Il faudra gérer la charge de travail (si un thread est sauvegardé, un thread libre de voler des tâches à partir du retard de thread).
  • laissez-nous continuer cette discussion dans le chat

InformationsquelleAutor David | 2011-08-20