Sobes.tech
Middle

Co je to deadlock?

sobes.tech AI

Odpověď od AI

Deadlock (vzájemné blokování) — je situace v vícevláknové aplikaci, kdy dva nebo více vláken navždy zablokují navzájem, čekajíce na uvolnění zdrojů, které drží jiné vlákno. Výsledkem je, že žádné vlákno nemůže pokračovat.

Příklad klasické situace deadlock:

  • Vlákno A získá zdroj 1 a čeká na zdroj 2.
  • Vlákno B získá zdroj 2 a čeká na zdroj 1.

Obě vlákna jsou navždy zablokována.

Pro prevenci deadlocků se používají:

  • Přísný pořadí získávání zdrojů.
  • Časové limity (timeout) při čekání na zámky.
  • Použití nekblokujících algoritmů.

Příklad v Java:

synchronized(resource1) {
    synchronized(resource2) {
        // práce se zdroji
    }
}

Pokud se jiné vlákno pokusí získat zdroje v opačném pořadí, může dojít k deadlocku.