Middle
Mis on deadlock?
sobes.tech AI
Vastus AI-lt
Deadlock (vastastikune lukustus) — olukord mitme lõimega rakenduses, kus kaks või enam lõime lukustavad üksteist igavesti, oodates, kuni teine lõim vabastab ressursid, mida ta on hõivanud. Selle tulemusena ei saa ükski lõim tööd jätkata.
Klassikaline deadlocki näide:
- A lõim omandab ressursi 1 ja ootab ressursi 2.
- B lõim omandab ressursi 2 ja ootab ressursi 1.
Mõlemad lõimed jäävad igaveseks lukustatud.
Deadlocki ennetamiseks kasutatakse:
- Ranget ressursside omandamise järjekorda.
- Aja limite (timeout) ooteaegadel.
- Mitte-lukustavaid algoritme.
Java näide:
synchronized(resource1) {
synchronized(resource2) {
// töö ressurssidega
}
}
Kui teine lõim püüab ressursid vastupidises järjekorras omandada, võib tekkida deadlock.