Bonjour,
Voici la première fois que je viens sur ce site et je me suis dit que ce serait un bon endroit pour y soumettre mon problème; le voici donc. J'ai un soft qui tourne à la base sur deux processeurs distincts (CPU A, CPU B) que je dois simuler. L'idée est d'utiliser deux threads pour simuler chaque processeur. La difficulté est que je dois caler des écritures/lectures entre les CPU et j'ai donc des temps d'attente sur chaque threads pour que la lecture se fasse à condition que l'autre CPU ait bien écrit.
Le programme tourne bien, compile, s'exécute mais le souci est qu'il est bien trop lent... J'ai donc regardé le temps que mettait chaque thread pour faire ses lectures/écritures et il se trouve que le thread B met à peu près 50 fois plus de temps que le thread A pour faire la même opération à cause des temps d'attente entre les threads.
Voici donc le souci: en tentant de débugger mon prog, je me suis rendu compte que l'ajout de printf dans mes threads résolvait le problème (des printf qui n'influence pas l'exécution, juste du débuggage). Je ne sais pas du tout la cause de cette amélioration mais il semblerait que les printf aide les threads a prendre la main au bon moment. J'aurais aimé une solution plus nette qui me permettrait de retrouver ce résultat à l'exécution. Je me demande aussi si j'arriverai à avoir un bon résultat sachant que le programme tourne sur un machine classique ou un tas d'autre processus tournent en même temps et je me demande si je peux avoir une gestion des threads indépendante de l'état courant de ma machine.
En espérant ne pas trop avoir été brouillon dans mon explication... merci d'avance
Partager