Junior — Middle
Quelle est la différence entre un verrouillage normal et un verrouillage récursif dans la synchronisation des threads?
sobes.tech IA
Réponse de l'IA
Le verrouillage normal (mutex) permet à un thread d’acquérir une ressource, et si ce même thread tente de l’acquérir à nouveau, il sera bloqué, ce qui conduit à un blocage mutuel (deadlock).
Le verrouillage récursif (recursive mutex) diffère en ce que le même thread peut l’acquérir plusieurs fois de suite sans être bloqué. Cependant, le verrou doit être libéré autant de fois qu’il a été acquis, pour que d’autres threads puissent y accéder.
Exemple :
-
Verrouillage normal :
- Le thread A acquiert le verrou.
- Le thread A tente de l’acquérir à nouveau — il est bloqué indéfiniment.
-
Verrouillage récursif :
- Le thread A acquiert le verrou.
- Le thread A le reprend — avec succès.
- Le thread A libère le verrou deux fois, après quoi il devient accessible à d’autres threads.