Sobes.tech
Middle

Čo je deadlock?

sobes.tech AI

Odpoveď od AI

Deadlock (medzisebné blokovanie) — situácia v viacvláknovej aplikácii, keď dve alebo viac vlákien navždy zablokujú navzájom, čakajúc na uvoľnenie zdrojov, ktoré drží iné vlákno. V dôsledku toho žiadne vlákno nemôže pokračovať.

Príklad klasickej situácie deadlock:

  • Vlákno A získa zdroj 1 a čaká na zdroj 2.
  • Vlákno B získa zdroj 2 a čaká na zdroj 1.

Obe vlákna zostávajú navždy zablokované.

Na prevenciu deadlockov sa používajú:

  • Prísny poradie získavania zdrojov.
  • Časové limity (timeout) pri čakaní na zámky.
  • Použitie nekblokujúcich algoritmov.

Príklad v Jave:

synchronized(resource1) {
    synchronized(resource2) {
        // práca so zdrojmi
    }
}

Ak sa iné vlákno pokúsi získať zdroje v opačnom poradí, môže dôjsť k deadlocku.