Middle
Kas yra deadlock?
sobes.tech AI
Atsakymas iš AI
Deadlock (tarpusavio blokavimas) — situacija daugialypėje programoje, kai du ar daugiau siūlų amžinai blokuoja vienas kitą, laukdami, kol kitas siūlas atlaisvins išteklius, kuriuos jis užėmė. Dėl to nė vienas siūlas negali tęsti darbo.
Klasikinis deadlock pavyzdys:
- Siūlas A įgyja išteklių 1 ir laukia išteklių 2.
- Siūlas B įgyja išteklių 2 ir laukia išteklių 1.
Abu siūlai lieka amžinai užblokuoti.
Deadlock prevencijai taikomi:
- Griežta išteklių įgijimo tvarka.
- Laiko limitai (timeout) laukimo metu.
- Naudojant neblokavimo algoritmus.
Java pavyzdys:
synchronized(resource1) {
synchronized(resource2) {
// darbai su ištekliais
}
}
Jei kitas siūlas bando įgyti išteklius atvirkštine tvarka, gali įvykti deadlock.