Junior — Middle
Կարող եք բացատրել, թե ինչ տեսակների բլոկավորումներ կան և ինչպես են աշխատում բազմատող ծրագրավորման մեջ։
sobes.tech AI
Պատասխան AI-ից
Բազմաթելային ծրագրավորման մեջ կան տարբեր տեսակի փակագծեր, որոնք օգնում են սինխրոնիզացնել ընդհանուր ռեսուրսների մուտքը.
- Mutex (Mutual Exclusion) — ապահովում է բացառիկ մուտք ռեսուրսին: Միայն մեկ թել կարող է ձեռք բերել mutex-ը տվյալ պահին:
- Վերահսկվող mutex — թույլ է տալիս նույն թելին մի քանի անգամ ձեռք բերել փակագիծը առանց փոխադարձ բլոկավորման:
- Կարդալ-գրել փակագիծ (Read-Write Lock) — թույլ է տալիս միաժամանակ մի քանի թելերի կարդալ ռեսուրսը, բայց գրելը հնարավոր է միայն բացառիկ կերպով:
- Սեմաֆոր — սահմանափակում է միաժամանակ ռեսուրսին մուտք գործող թելերի քանակը:
- Spinlock (ակտիվ սպասում) — թելը ցիկլում ստուգում է, արդյոք փակագիծը հասանելի է, առանց սպասման վիճակին անցնելու:
Swift-ում mutex-ի օգտագործման օրինակ:
let lock = NSLock()
func criticalSection() {
lock.lock()
// Կրիտիկական հատված
lock.unlock()
}
Փակագծի տեսակի ընտրությունը կախված է առաջադրանքի և կատարողականի և անվտանգության պահանջներից։