Bonjour,
j'ai fait fâce il y a quelques jours a un petit problème de conflits entre threads que j'ai pu résoudre mais sans vraiment comprendre l'origine de celui-ci (manque de connaissance en multithreading)
Mon appli effectue de lourds calculs sur du traitement d'image et pour l'accélérer j'utilise 2 threads de calcul (l'un dans le main l'autre à l'aide d'un QThread) qui effectuent le meme traitement sur 2 sous-partie de l'image.
Le traitement se trouvait à l'origine dans une fonction appartenant à un namespace créé par moi même, les 2 threads de calcul appelaient donc la même fonction qui prenait en entrée un pointeur sur un même objet. Dans le traitement des champs de l'objet sont lus et d'autres sont modifiés (en prenant soin d'utiliser des mutex). Dans cette configuration le soft ne fonctionnait pas et c'est là que je n'ai pas compris la raison?!
Pour remédier à ce problème j'ai créé une classe implémentant la fonction de traitement, et pour chaque thread je travaille sur 2 instances différentes de cette classe, là tout fonctionne.
Quelqu'un pourrait m'éclaircir?
merci
Partager