Re: createmutex releasemutex
Citation:
Envoyé par buzzz
j'ai parcouru les pages d'info sur les mutex windows
j'ai cru comprendre qu'un mutex devait etre utilisé a l'interieur d'un processus et pourtant a chaque fois j'ai cru comprendre que si on l'identifiait par un nom... le handle etait commun a tous les process...
Inexact, le handle n'est pas commun car un variable même globale est allouée dans le heap d'un processus, une mémoire qu'il ne partage pas par défaut avec les autres processus. Le fait de nommer un mutex t'assure justement de le retrouvé et d'obtenir son handle, unique dans ce cas là.
Citation:
Envoyé par buzzz
personnellement cela m'arrange mais me pose un probleme
en effet je suis sensé faire un jour un releasemutex lorsque le programme se termine par exemple pour liberer la ressource.
Si a ce moment la un thread d'un autre process fait un WaitForSingleObject sur le handle qui est released donc normalement sans aucun sens... je vais avoir un plantage...
Non, WaitForSingleObject te retourne justement WAIT_ABANDONNED dans ce as précis.
Citation:
Envoyé par buzzz
Cela signifierait qu'un tel type de mutex (associé a un nom et partagé entre tous les process) ne peut etre released un jour sans risque ?
Non car chaque process ou thread qui veut utiliser ce mutex demande à le créer avec CreateMutes et donc récupère un handle valide dessus. Et à chacune de ces demande, un compteur de référence est incrémenté. Le handle est réellement libéré uniquement quand ce compteur de référence est à zéro. Et ce compteur de référence es décrémenté par CloseHandle.
ReleaseMutex ne fait que signaler aux processus(ou thread en attente) que le mutex est libre.