fregolo52
Messages postés1114Date d'inscriptionmercredi 15 juin 2011StatutMembreDernière intervention 6 mai 2021
-
31 oct. 2006 à 10:42
leprov
Messages postés1160Date d'inscriptionvendredi 23 juillet 2004StatutMembreDernière intervention21 octobre 2010
-
31 oct. 2006 à 14:19
Bonjour,
J'essaie de de faire une sorte de Send/Receive synchrone.
J'utilise les mutex, mais je ne comprends pas pourquoi il ne se met pas en attente d'un signal.
Dans le contructeur de la classe :
Mutex mutexAuthent = new Mutex();
Dans mon Thread de réception, j'ai quelque part :
mutexAuthent.ReleaseMutex();
Où est mon erreur ? En fait quand j'envoie mes données le mutex d'attend pas le signal "Release". Le programme passe directement par "Mon Traitement", ce qui voudrait dire que le mutex a reçu un signal, mais je ne sais pas d'où.
leprov
Messages postés1160Date d'inscriptionvendredi 23 juillet 2004StatutMembreDernière intervention21 octobre 201017 31 oct. 2006 à 11:02
le premier waitone n'est pas bloquant. si un deuxieme thread appel waitone sur ton mutex, la ce sera bloquant (pour le deuxieme thread, qui attendra alors que le premier ait appelé releasemutex).
fregolo52
Messages postés1114Date d'inscriptionmercredi 15 juin 2011StatutMembreDernière intervention 6 mai 20214 31 oct. 2006 à 13:53
Oui en effet, je me suis rendu compte de la "connerie" de ma question.
Comment mettre en pause la fonction d'envoi (parce que sinon la réponse la fonction continue des instructions ou s'arrête) ?
J'ai pensé aux EventHandler, mais c'est complètement asynchrone.
Ou encore créer une variable globale, et tester son changement d'état (suivant si on a eu ne réponse ou un timeout) : un peu lourd dingue comme méthode.
leprov
Messages postés1160Date d'inscriptionvendredi 23 juillet 2004StatutMembreDernière intervention21 octobre 201017 31 oct. 2006 à 14:19
il faut mettre aussi un waitone dans ton autre thread qui doit etre bloquant, ainsi le premier qui passe sur le waitone prend la ressource et execute son code jusqu'au releasemutex, et l'autre thread ne reprend la main qu'apres