Bonjour,
j'ai un petit soucis dans l'élaboration d'un programme C que je suis en train de faire.
Le principe est de simuler le fonctionnement d'un entrepot qui gère différentes pièces.
J'ai mon programme principal qui créée un thread, ce thread créé des pièces de différents type, et envoit ces pièces à 2 machines tour à tour. Jusqu'ici tout va bien.
J'ai 2 autres threads, un par machine. Quand une machine reçoit une pièce qu'elle ne peut pas traiter, elle l'a renvoit à l'autre machine.
Chaque machine possède une file de message dans laquelle j'envoit les pièces.
Je pense que je m'y suis mal prit au niveau du thread qui génère les pièces, voici le principe que j'utilise:
- j'envois toutes les pièces aux différentes machines tour à tour.
- j'envois la même structure dans la file d'attente de chaque machine, dont le m.text est "finish"
Ensuite au niveau des threads des machines, j'ai une boucle while qui controle la valeur de m.text si c'est finish ou pas.
Au final mon problème est que si une machine reçoit finish, elle s'arrete, et si l'autre machine à eu après ça une pièce qu'elle ne peut pas traiter, elle l'envoit à l'autre machine (dont le thread est déjà terminé...). Du coup mon programme ne s'arrete pas.
Là je pense que j'ai plus un problème de mise en place qu'autre chose, j'pense avoir bien saisi le fonctionnement des threads mais je suis bloqué là. Je pense pas que utiliser les sémaphores dans ce cas là puisse résoudre le problème.
Si quelqu'un à une idée...
Merci