J'ai écrit deux programmes qui communiquent sur tcp. Ces deux programmes sont en principe les mêmes. Les messages sont stockés dans un tampon interne, avant de les envoyer sur TCP. J'utilise un mutex pour protéger ce tampon pour une lecture/écriture simultanée. Pour tester, j'ai exécuté ces deux programmes sur le même ordinateur et j'ai eu des problèmes de synchronisation. J'ai découvert que CreateMutex renvoie toujours le même handle sur les deux programmes et donc un programme bloque l'autre! Peu importe le nom que j'utilise pour le mutex, il est toujours le même sur les deux programmes. Qu'est-ce que je fais mal?CreateMutex dans deux programmes différents, même handle (gcc)
0
A
Répondre
4
Si vous utilisez simplement le mutex dans un programme, utilisez un nom un-set anonyme à NULL. Le nom n'est réellement utilisé que lorsque vous voulez communiquer entre deux programmes (... s'exécutant sur la même session de connexion, par défaut, ou sur la même machine, si vous utilisez un préfixe 'global \'.)
Dans le cas contraire, vous pourriez utiliser une section critique au lieu d'un mutex - c'est une version plus légère qui ne peut être utilisée que dans un processus.
Questions connexes
- 1. Deux programmes différents en Flash
- 2. CreateMutex() et OpenMutex() retournent des handles différents
- 3. Handle LPDWORD, LPSTR dans GCC
- 4. Comment utiliser le même objet IvParameterSpec dans différents programmes?
- 5. Comment créer deux programmes d'installation différents à partir du même script dans inno?
- 6. questions CreateMutex
- 7. Même .vimrc, deux ordinateurs différents
- 8. Deux graphiques différents dans la même parcelle
- 9. Comment inclure deux dossiers différents dans le même projet git?
- 10. Windows Installer: deux programmes d'installation différents peuvent-ils partager le même composant
- 11. accéder Dictionnaire de différents programmes
- 12. CreateMutex, OpenMutex et synchronisation processus
- 13. Autowiring deux différents grains de même classe
- 14. La même adresse montre deux endroits différents
- 15. Même DIV deux fois différents flotteurs?
- 16. GCC compilant plusieurs fichiers dans différents dossiers
- 17. Communication entre deux programmes sur le même ordinateur - Comment?
- 18. Comment écrire dans le même fichier dans différents sous-programmes de Perl?
- 19. CreateMutex - "Accès refusé"
- 20. Fusion de programmes de différents langages
- 21. Débogage fonctions lentes dans les programmes C (construits par gcc)
- 22. Interaction de deux programmes c/C++
- 23. Erreur: Deux programmes principaux dans Fortran
- 24. SELECT deux champs différents de même colonne dans une requête,
- 25. Impossible d'utiliser la même ressource dans deux canevas différents
- 26. deux zones mvc avec le même nom dans différents projets
- 27. jQuery SimpleModal: deux contenus modaux différents dans la même page
- 28. Deux jquery.js différents volent dans un même fichier html
- 29. Log4net Connexion à deux fichiers différents dans la même application
- 30. Utilisez deux méthodes du même nom dans différents fichiers .js
Et, bien sûr, l'appeler avec 'bInitialOwner == TRUE'. – MSalters
Cela ne fait aucune différence si je mets le nom à NULL ou non. Et avec 'bInitialOwner = TRUE', mon programme est bloqué lorsque j'appelle' WaitForSingleObject'. (Peut-être que j'aurais dû le sortir en premier?!). Mais j'ai déjà passé à CriticalSection et ça fonctionne maintenant. Merci! – Sascha