Sobes.tech
Middle

Šta je deadlock?

sobes.tech АИ

Одговор од АИ

Deadlock (međusobno blokiranje) — situacija u višeslojnoj aplikaciji gde dva ili više niti zauvek blokiraju jedna drugu, čekajući da oslobode resurse koje je zauzeo drugi nit. Kao rezultat, nijedna nit ne može da nastavi sa radom.

Primer klasične situacije deadlock:

  • Nit A zauzima resurs 1 i čeka resurs 2.
  • Nit B zauzima resurs 2 i čeka resurs 1.

Obe niti ostaju zauvek blokirane.

Za sprečavanje deadlock-ova primenjuju se:

  • Strogi redosled zauzimanja resursa.
  • Timeout-ovi pri čekanju na blokade.
  • Korišćenje nekblokirajućih algoritama.

Primer u Javi:

synchronized(resource1) {
    synchronized(resource2) {
        // rad sa resursima
    }
}

Ako druga nit pokuša da zauzme resurse u obrnutom redosledu, može doći do deadlock-a.