Le verrou, un cas particulier de sémaphore ?

Le problème exposé dans ce sujet a été résolu.

Bonjour à tous,

Est-ce qu'un verrou Java, utilisé dans synchronized(objet_verrou) est un sémaphore de valeur 1 ? Peut-on affirmer cela du point de vue du développeur Java tel que moi par exemple (je pense que oui), mais aussi du point de vue de l'implémentation-langage de ces mécanismes (classe Semaphore et mécanisme synchronized) ?

Merci d'avance, bonne journée !

Non, ce n'est pas pareil. Un sémaphore peut être manipulé par deux threads différents, alors qu'un verrou doit être libéré par le thread qui l'a acquis. D'ailleurs, l'usage d'un sémaphore (même binaire) est plus large qu'un simple verrou (mutex), il peut être initialisé a zéro par exemple.

A semaphore initialized to one, and which is used such that it only has at most one permit available, can serve as a mutual exclusion lock. This is more commonly known as a binary semaphore, because it only has two states: one permit available, or zero permits available. When used in this way, the binary semaphore has the property (unlike many Lock implementations), that the "lock" can be released by a thread other than the owner (as semaphores have no notion of ownership). This can be useful in some specialized contexts, such as deadlock recovery.

https://docs.oracle.com/javase/7/docs/api/java/util/concurrent/Semaphore.html

+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte