Sobes.tech
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()
}

Փակագծի տեսակի ընտրությունը կախված է առաջադրանքի և կատարողականի և անվտանգության պահանջներից։