Fonctionnement du signal pour les moniteurs :
- L'opération de signal pour les moniteurs est connue sous le nom de signal() ou notifier()
- Il est utilisé pour notifier le thread en attente que la ressource partagée est devenue disponible.
- Lorsque l'opération de signal est appelée, le moniteur libère le verrou et le thread en attente est autorisé à continuer.
Opération de signal pour les sémaphores :
- L'opération de signal pour les sémaphores est connue sous le nom de V() ou haut()
- Il permet d'incrémenter la valeur du sémaphore.
- Lorsque l'opération signal est appelée, le sémaphore est incrémenté de 1, indiquant qu'une unité de ressource supplémentaire est devenue disponible.
Différences clés :
- Les moniteurs utilisent une variable de condition pour garantir que les threads n'attendent que la ressource spécifique dont ils ont besoin, tandis que les sémaphores utilisent un sémaphore binaire pour garantir qu'un seul thread peut accéder à une ressource partagée à la fois.
- Les moniteurs sont utilisés pour la synchronisation entre les threads accédant aux ressources partagées, tandis que les sémaphores sont utilisés pour l'exclusion mutuelle entre les threads accédant à des ressources partagées.
|