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.