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.