Sobes.tech
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.