Sobes.tech
Middle

Kas ir deadlock?

sobes.tech AI

Atbilde no AI

Deadlock (savstarpēja bloķēšana) — situācija daudzšūnu programmā, kad divi vai vairāk šūnu mūžīgi bloķē viens otru, gaidot, kamēr cits šūns atbrīvos resursus, kurus ir ieguvis. Rezultātā neviens šūns nevar turpināt darbu.

Klasisks deadlock piemērs:

  • Šūns A iegūst resursu 1 un gaida resursu 2.
  • Šūns B iegūst resursu 2 un gaida resursu 1.

Abi šūni paliek mūžīgi bloķēti.

Deadlock novēršanai tiek piemēroti:

  • Stingrs resursu iegūšanas kārtība.
  • Laika ierobežojumi (timeout) gaidīšanas laikā.
  • Ne-bloķējošu algoritmu izmantošana.

Java piemērs:

synchronized(resource1) {
    synchronized(resource2) {
        // darbs ar resursiem
    }
}

Ja cita šūna mēģina iegūt resursus pretējā secībā, var rasties deadlock.