Middle
Ի՞նչ է deadlock-ը։
sobes.tech AI
Պատասխան AI-ից
Deadlock (միմյանց խոչընդոտում) — շատթևային ծրագրում, երբ երկու կամ ավելի թելեր հավերժորեն խոչընդոտում են մեկը մյուսին՝ սպասելով, որ մյուսը ազատի այն ռեսուրսները, որոնք զբաղեցրած են մյուս թելով։ Նման դեպքում ոչ մի թել չի կարող շարունակել աշխատանքը։
Կլասիկ deadlock-ի օրինակ՝
- Թել A-ն ձեռք է բերում ռեսուրս 1-ը և սպասում ռեսուրս 2-ին։
- Թել B-ն ձեռք է բերում ռեսուրս 2-ը և սպասում ռեսուրս 1-ին։
Երկուսն էլ հավերժորեն խոչընդոտված են։
Deadlock-ների կանխարգելման համար կիրառվում են՝
- Կատարյալ կարգով ռեսուրսների ձեռքբերում։
- Ժամկետային սահմանափակումներ (timeout) սպասելիս։
- Օգտագործել ոչ-խոչընդոտող ալգորիթմներ։
Java-ում օրինակ՝
synchronized(resource1) {
synchronized(resource2) {
// աշխատել ռեսուրսների հետ
}
}
Եթե այլ թել փորձում է ձեռք բերել ռեսուրսները հակառակ կարգով, կարող է տեղի ունենալ deadlock։