Vous avez raison que vous aurez besoin d'utiliser une approche filetée pour utiliser plus d'un noyau. Boost possède une bibliothèque de threads, mais ce n'est pas tout le problème: vous devez également modifier votre algorithme pour qu'il fonctionne dans un environnement threadé.
Certains algorithmes ne peuvent tout simplement pas fonctionner en parallèle - par exemple, SHA-1 effectue un certain nombre de "passes" sur ses données, mais ils ne peuvent pas être enfilés car chaque passe dépend de la sortie avant . Afin de paralléliser votre programme, vous devez vous assurer que votre algorithme peut "diviser et vaincre" le problème en morceaux indépendants, qu'il peut ensuite traiter en parallèle avant de les combiner en un résultat complet.Quoi que vous fassiez, soyez très prudent pour vérifier l'exactitude de votre réponse. Enregistrez le code à un seul thread, de sorte que vous puissiez comparer sa sortie à celle de votre code multithread; threading est notoirement difficile à faire, et plein d'erreurs potentielles. Il vaut peut-être mieux que vous évitiez de filer entièrement, et essayez plutôt de profiler votre code: vous pouvez obtenir des améliorations de vitesse spectaculaires en optimisant le code le plus fréquemment exécuté, sans pour autant approcher les défis du threading.
@Edit: Oui, je ne vois pas l'intérêt d'utiliser des bibliothèques en C++ (comme boost). =/@ Mild-Offtopic: Oui, juste appris des threads, à peu près, en C++ récemment. :-) Bon conseil. :) – Zack
@Zack: voulez-vous dire que vous ne voyez pas l'intérêt d'utiliser des bibliothèques en C++ en général? Parce que Boost est incroyable. – rlbond
L'utilisation de bibliothèques/structures de données/modèles de conception simultanées simplifie certains des problèmes liés à la concurrence. Avec une conception adaptée, il suffira que quelques composants soient conscients de la concurrence et que le reste puisse être mono-thread, tout en profitant de tous les cœurs de processeurs disponibles. –