Rakinimo aklavietė
From Wikipedia, the free encyclopedia
Rakinimo aklavietė (angl. deadlock) – padėtis, kuomet dvi gijos abi laukia viena kitos atliekant kokį nors veiksmą. Kadangi abi gijos yra laukimo režime, jokie laukiami veiksmai neatliekami ir ši padėtis gali trukti neribotą laiką.
![]() |
Šiam straipsniui ar jo daliai trūksta išnašų į patikimus šaltinius. Jūs galite padėti Vikipedijai pridėdami tinkamas išnašas su šaltiniais. |
![]() |
Šį straipsnį gali būti gana sunku suprasti be papildomų informacijos šaltinių. Galite perrašyti dėstomus teiginius plačiau ir suteikiant daugiau konteksto. |
Tai panašu į du piešėjus, kurie piešia vienu pieštuku ant vieno popieriaus lapo ir gali perduoti piešimo įrankius tik nupiešę savo dalį[reikalingas šaltinis]. Jei atsitinka taip, jog vienas žaidėjas turi tik pieštuką, o kitas tik popierių, nė vienas iš jų negali atlikti piešimo veiksmo ir atiduoti turimo piešimo įrankio. Taigi, nekeičiant žaidimo taisyklių, tokia padėtis gali trukti amžinai.
Rakinimo aklavietei pasireikšti būtinos šios sąlygos
- Rakinamas resursas visada priklauso tik vienai gijai.
- Gija, jau turinti rakinamų resursų, gali prašyti jų daugiau (turėti tik vieną resursą ir su juo apsieiti yra saugu).
- Negalima resurso iš gijos atimti „jėga“ – resursą atlaisvinti kitiems gali tik jo dabartinis savininkas.
- Dvi gijos gali tuo pat metu laukti resursų, kurios abiem atvejais turi antroji pusė.
Šias sąlygas 1971 m. suformulavo E. G. Coffman.
Programa, kurioje pasireiškia ši klaida, gali netikėtai apskritai sustoti. Kas ir kodėl atsitiko, paprastai nustatyti būna labai sunku. Kai kurios vykdymo sistemos tokiu atveju į sutartą klaviatūros klavišų kombinaciją (java sistemoje ctrl - break) atsako išvardindamos visas tuo metu kažko laukiančias gijas.