petit probleme de communication inter thread

petit probleme de communication inter thread - C - Programmation

Marsh Posté le 27-03-2009 à 12:06:04    

j'ai un souci avec une application multithread je vais essayer d'être claire
 
en gros :
 
j'ai mon IHM dans un thread
 
au démarrage j'initialise un autre thread qui a un callback sur un événement du port série
se thread (numéro 2) verrouille une sémaphore ...
 
lorsque l'ihm fait une demande sur le port série elle attend gentilment que le sémaphore soit libéré
 
des que le port série reçoit une réponse il libère la sémaphore
 
l'ihm reprend alors sont traitement normal et tout le monde est content ...
 
tout le monde ... sauf le pauvre mec qui c'est gouré de port série et qui n'aura donc jamais de réponse... et il verra son appli figée ... a attendre une réponse en vain ...
 
solution ... mettre un timer ... oui mais comment dire au timer de libérer un sémaphore qui a été verrouiller ailleurs ... ben on peu pas (c'est même le but d'une sémaphore...)
 
es que vous auriez des idées de solutions ???

Reply

Marsh Posté le 27-03-2009 à 12:06:04   

Reply

Marsh Posté le 27-03-2009 à 12:18:25    

birdyz53 a écrit :

solution ... mettre un timer ... oui mais comment dire au timer de libérer un sémaphore qui a été verrouiller ailleurs ... ben on peu pas (c'est même le but d'une sémaphore...)
 
es que vous auriez des idées de solutions ???


Gérer un timer qui détruit le sémaphore (ou qui envoi un message de déblocage) à échéance ...


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 27-03-2009 à 12:35:31    

oui mais comment un timer qui s'exécutera si je ne me trompe dans un autre thread peut il détruire une sémaphore qui ne lui appartient pas?  
 
l'ennui ici c'est que la fonction qui libère la sémaphore est exécuter que si une action a lieu sur le port RS232

Reply

Marsh Posté le 27-03-2009 à 12:44:08    

birdyz53 a écrit :

oui mais comment un timer qui s'exécutera si je ne me trompe dans un autre thread peut il détruire une sémaphore qui ne lui appartient pas?


Il suffit de lui passer son adresse au lancement du thread timer...


Message édité par Emmanuel Delahaye le 27-03-2009 à 12:44:25

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 27-03-2009 à 15:26:57    

oui mai le dernier a avoir verrouiller la sémaphore sera l'autre thread... et par principe il n'y a que lui qui peut déverrouiller sa sémaphore non?
 
je ne veux pas entendre par la avoir la sémaphore mais "être le propriétaire" de la sémaphore.

Reply

Marsh Posté le 27-03-2009 à 23:08:53    

Il est possible de mettre des timeouts sur les sémaphores. Je ne retrouve plus le lien qui en parlait cependant.

Reply

Marsh Posté le 30-03-2009 à 11:30:39    

j'ai trouver des fonctions dans l'ide qui correspondent a mon besoin et qui m'ont même permit d'améliorer mon code ...
pour ceux qui connaisse labwindows ... ce sont les fonctions CmtNewTSQ etc...

 

merci a tous en tout cas


Message édité par birdyz53 le 30-03-2009 à 11:31:03
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed