Forum Clubic

Mutex ou semaphore - Que choisir

Bonjour,
J’ai développé au boulot une application constituée de plusieurs processus qui utilisent tous une même mémoire paratagée.
Sur la version Windows, les accès à cette mémoire sont protégés par un Mutex nommé.
J’ai fait dernièrement un portage sous solaris. Comme les Mutex système n’existent pas sous solaris (en tout cas la version que j’ai), j’ai utilisé des simples sémaphores et ca marche très bien.
Ma question est donc la suivante : quelle est la différences entres les sémaphores et les Mutex (puisque les deux existent sous windows) et accessoirement pourquoi choisi-t-on l’un plutôt que l’autre ? :??:
Si quelqu’un a une réponse, je le remercie par avance de sa réponse.
A+

Perso, je vois une différence entre les mutex et les sémaphores : les mutex permettent de protéger l’accès à un thread et uniquement cela, la ou un sémaphore permet les deux (création d’une mémoire partagée + mécanisme d’accès).

Effectivement, après avoir passé du temps sur les docs je crois avoir compris que les mutext sont des sémaphores binaires (avec un compte de 1).
Cest la seule différence sous Windows.
Sous linux (ou unix), les mutext ne sont utilisables qu’entre threads d’un même process contrairement au semaphore qui peut l’être aussi entre processus (en fait ils peuvent être utilisés entre processus, mais il faut alors les déclarer en mémoire partagée, ce qui est inutilement lourd).
D’après moi, le seul avantage des mutex sur les sémaphores est qu’ils sont plus optimisés par le système (ressources et temps d’execution) pour les threads d’un même processus.

Pour moi le sémaphore est employé dans le cas de restriction d’accès à un ensemble de ressources (en gros, n-jetons), tandis que le mutex est utilisé pour une ressource unique (1 jeton).

Parfaitement d’accord. Le mutex, c’est binaire, le sémaphore pas forcément. :slight_smile:

Bah je confirme aussi alors :smiley:

Il existe également les moniteurs qui sont très simples à utiliser…

Ah ouais? Je ne connais pas? Ca fonctionne comment?

En VGA ou en DVI :ane:

:MDR :MDR :MDR

Je suis à deux doigts de presser le bouton "signaler" sur le coup là!

:o :wink:

C’est qu’il y en a un qui l’a fait.

Bref, on arrête de jouer :slight_smile: