Problème multithreading

Résolu
cs_jojolemariole Messages postés 519 Date d'inscription mercredi 21 mars 2007 Statut Membre Dernière intervention 19 décembre 2016 - 21 mai 2008 à 14:36
cs_jojolemariole Messages postés 519 Date d'inscription mercredi 21 mars 2007 Statut Membre Dernière intervention 19 décembre 2016 - 21 mai 2008 à 22:46
Salut,

Depuis quelques temps je m'amuse à refaire tous mes programmes avec plusieurs processus avec un gain évident.
Aujourd'hui c'est une application dessinant une fractale que j'ai multithreadé. L'image est découpée en plusieurs zones (alternativement horizontalement et verticalement) et chaque zone est confiée à un thread.

Résultats sur un PIV monocore @3.4Ghz avec Hyper Threading:
<hr size="2" width="100%" />
1 thread(s) : 413ms (moyenne)
2 thread(s) : 343ms (moyenne)
4 thread(s) : 331ms (moyenne)
8 thread(s) : 334ms (moyenne)
16 thread(s) : 327ms (moyenne)
32 thread(s) : 357ms (moyenne)
64 thread(s) : 351ms (moyenne)
128 thread(s) : 385ms (moyenne)

Résultats sur un Core 2 Duo e6300 :
<hr size="2" width="100%" />
1 thread(s) : 417ms (moyenne)
2 thread(s) : 268ms (moyenne)
4 thread(s) : 228ms (moyenne)
8 thread(s) : 226ms (moyenne)
16 thread(s) : 229ms (moyenne)
32 thread(s) : 233ms (moyenne)
64 thread(s) : 231ms (moyenne)

Donc comme vous pouvez le voir, c'est plutôt concluant. Sauf que très souvent, ça plante au milieu du calcul. Sans consommer de processeur, comme s'il y avait un interblocage.
J'ai essayé de rajouter des affichages, mais quand je fais ça, il n'y a plus de plantage : comme si les interruptions d'écriture sur la console permettaient d'éviter le bug. Je ne sais pas si quelqu'un a déjà rencontré ce genre de problème, si c'est le cas avez-vous une piste?

Merci.

1 réponse

cs_jojolemariole Messages postés 519 Date d'inscription mercredi 21 mars 2007 Statut Membre Dernière intervention 19 décembre 2016 25
21 mai 2008 à 22:46
Problème résolu jusqu'à nouvel ordre. J'ai rajouté un synchronized sur une méthode et ça a résolu mon problème. Je mettrai le source sans tarder une fois que j'aurai une interface potable.
3
Rejoignez-nous