Multicœur et synchronisation
Quel est un exemple d’interblocage (deadlock) ?
- ALe thread 1 détient le verrou A et attend le verrou B, tandis que le thread 2 détient le verrou B et attend le verrou A
- BDeux threads modifient la même variable sans synchronisation et la valeur est corrompue
- CUn thread prend un verrou et le libère aussitôt
Afficher la réponse et l'explication
Réponse : A. Le thread 1 détient le verrou A et attend le verrou B, tandis que le thread 2 détient le verrou B et attend le verrou A
L’interblocage est une situation où plusieurs threads, conservant chacun des ressources, attendent les ressources détenues par les autres, si bien qu’aucun ne peut progresser. Dans l’exemple, le thread 1 attend la libération de B et le thread 2 celle de A, mais aucun ne lâche son propre verrou ; ils restent bloqués indéfiniment. Comme ils s’arrêtent sans consommer de CPU, le traitement paraît figé vu de l’extérieur.
Continuer : 9 autres questions sur Multicœur et synchronisation