Middle
Qu'est-ce qu'un deadlock?
sobes.tech IA
Réponse de l'IA
Deadlock (blocage mutuel) — est une situation dans une application multithread où deux ou plusieurs threads se bloquent mutuellement, en attendant la libération de ressources occupées par l'autre thread. En conséquence, aucun des threads ne peut continuer.
Exemple d'une situation classique de deadlock :
- Le thread A acquiert la ressource 1 et attend la ressource 2.
- Le thread B acquiert la ressource 2 et attend la ressource 1.
Les deux threads restent bloqués indéfiniment.
Pour prévenir les deadlocks, on utilise :
- Un ordre strict dans l'acquisition des ressources.
- Des délais d'attente (timeout) lors de l'attente de blocages.
- L'utilisation d'algorithmes non bloquants.
Exemple en Java :
synchronized(resource1) {
synchronized(resource2) {
// travail avec les ressources
}
}
Si un autre thread tente d'acquérir les ressources dans l'ordre inverse, un deadlock peut se produire.