Middle
Czym jest deadlock?
sobes.tech AI
Odpowiedź od AI
Deadlock (wzajemne blokowanie) — to sytuacja w aplikacji wielowątkowej, gdy dwa lub więcej wątków blokuje się nawzajem, oczekując na zwolnienie zasobów zajętych przez inny wątek. W rezultacie żaden z wątków nie może kontynuować pracy.
Przykład klasycznej sytuacji deadlock:
- Wątek A przejmuje zasób 1 i czeka na zasób 2.
- Wątek B przejmuje zasób 2 i czeka na zasób 1.
Oba wątki są na zawsze zablokowane.
Aby zapobiec deadlockom, stosuje się:
- Ścisły porządek przejmowania zasobów.
- Timeouty podczas oczekiwania na blokady.
- Użycie algorytmów bezblokowych.
Przykład w Java:
synchronized(resource1) {
synchronized(resource2) {
// praca z zasobami
}
}
Jeśli inny wątek próbuje przejąć zasoby w odwrotnej kolejności, może dojść do deadlocka.