Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3718 connectés 

  FORUM HardWare.fr
  Programmation
  C

  Synchronisation entre threads

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Synchronisation entre threads

n°1830646
dukable
Posté le 23-12-2008 à 03:16:12  profilanswer
 

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

mood
Publicité
Posté le 23-12-2008 à 03:16:12  profilanswer
 

n°1830661
Joel F
Real men use unique_ptr
Posté le 23-12-2008 à 09:27:51  profilanswer
 

google mutex,semaphore et variable condition

n°1830958
dukable
Posté le 23-12-2008 à 18:09:40  profilanswer
 

Oui mais dans ce cas précis j'vois mal comment utiliser un mutex ou un sémaphore en fait, c'est ça le truc, ça peut pas trop s'appliquer. Après variable condition je sais pas c'est quoi donc je vais regarder.
Merci pour la réponse, si quelqu'un à d'autres suggestions...


Message édité par dukable le 23-12-2008 à 18:09:53
n°1830961
dukable
Posté le 23-12-2008 à 18:13:06  profilanswer
 

Ah oui je viens de lire brièvement ce que c'est et ça pourrais le faire, puisque pour les 2 machines je pourrais les faire arrêter lorsque toutes les pièces ont été traitées. J'avais essayé de faire une variable globale compteur qui compte les pièces traitées en étant incrémentée par les 2 machines à chaque pièces traitées, jusqu'à avoir traitée le nombre de pièces passées en paramètres, mais je n'arrivais pas à faire terminer les threads.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  Synchronisation entre threads

 

Sujets relatifs
synchronisation temporelle entre 2 applications distinctespb avec la gestion des threads et le resultat sur la sortie std
Problème d'utilisation des Threads avec lib javacommSynchronisation de 2 JTedtPane
Modelisation UML de threadsprobléme de methode avec les threads
Synchronisation de threads - Sémaphore, Mutex ou SRWLock ?Probleme de synchronisation ecriture tubes / multi threads fork
Synchronisation de threads en C#Synchronisation de threads
Plus de sujets relatifs à : Synchronisation entre threads


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)