Sobes.tech
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.