Multithread générique - C++ - Programmation
Marsh Posté le 04-06-2011 à 17:55:24
Ça y est, j'ai trouvé une manière faire proche de ce que j'imaginai.
Je crée des classes contenant ma fonction et ses paramètres puis j'ai juste à balancer la fonction dans un thread.
Donc au lieu d'avoir une fonction par traitement j'ai maintenant une classe mais ça ne change pas grand chose
Merci quand même !
A+
Le code pour ceux que ça intéresserait :
Code :
|
Marsh Posté le 04-06-2011 à 10:47:57
Salut à tous,
Voici mon problème : j'ai des conteneurs 3D dans lesquels je stocke des données quelconque sur lesquelles je souhaite appliquer divers filtres, morphologies mathématiques, etc... Donc jusqu'ici, pour paralléliser ces opérations, je faisais une fonction pour l'opération elle-même et une fonction qui s'occupait de créer mes threads et de leur répartir le travail (chaque thread traite une partie du volume). Le truc c'est cette seconde fonction est en fait tout le temps la même à l'exception du nom de la fonction que celle-ci appelle et des paramètres de la fonction appelée. Je cherche donc un moyen d'écrire une fonction générique qui pourrait m'appeler n'importe qu'elle fonction. Donc jusqu'ici je suis parvenu à appeler une fonction quelconque en passant un pointeur sur fonction à ma fonction générique mais le hic c'est que toutes les fonctions qu'elle peut potentiellement appeler doivent avoir les mêmes paramètres (ce qui n'est évidemment pas le cas de mes fonctions). J'ai solutionné le problème en passant à mes fonctions un vector de pointeurs. Ça marche alors très bien mais je suis obligé de faire plein de static_cast au début de mes fonctions pour utiliser mes pointeurs et en plus je me retrouve à manipuler des pointeurs partout et c'est un peu ch***t .... Je cherche donc un moyen plus joli de faire ça, qui m'éviterai de passer par un vector de pointeurs
Pour la partie threads, j'utilise Boost::threads.
Merci d'avance
PS : Voici le code actuel (faites pas attention aux fonctions Run,affiche_test et test_thread: