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 :
  1. Tant que la solution n'est pas trouv�e :
  2. R�cup�rer le r�sultat de la recherche FORWARD
  3. R�cup�rer le r�sultat de la recherche BACKWARD
  4. Faire un test d'union entre les deux recherches
  5. 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