Bonsoir,
J'utilise la librairie pthread pour cr�er mes threads et je suis face � un probl�me de synchronisation :
Je travaille sur la recherche bidirectionnelle dans un graphe.
J'ai donc cr�er une fonction qui fait une recherche de l'�tat initial vers l'�tat final (forward) et une autre qui fait dans l'autre sens (backward)
Les �tapes de l'algorithme sont les suivants :
- Tant que la solution n'est pas trouv�e :
- R�cup�rer le r�sultat de la recherche FORWARD
- R�cup�rer le r�sultat de la recherche BACKWARD
- Faire un test d'union entre les deux recherches
- Si ce test est concluant alors quitter l'algo sinon continuer
En s�quentiel, ca marche tr�s bien mais je n'arrive pas � parall�liser la recherche BACKWARD (la recherche FORWARD sera faite dans le thread principal).
L'id�e serait :
- Cr�er le thread de recherche pour BACKWARD (qui sera en boucle infinie)
- Tant que la solution n'est pas trouv�e : (thread principal)
- R�cup�rer le r�sultat de la recherche FORWARD (thread principal)
- Attendre que le thread ait fini le premier tour
- Faire un test d'union entre les deux recherches (thread principal)
- Si ce test est concluant alors quitter l'algo sinon continuer (thread principal)
Je dois utiliser les threads avec conditions (et peut �tre des mutex) mais voil�, je s�che.
A mon avis, c'est pas clair car ce n'est pas clar pour moi non plus
Avez vous une id�e ?
Merci d'avance![]()
Partager