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.