Junior — Middle
Çox ipli proqramlaşdırmada hansı bloklama növlərinin mövcud olduğunu və onların necə işlədiyini izah edə bilərsinizmi?
sobes.tech Süni İntellekt
AI-dan cavab
Çox iş parçacığı proqramlaşdırmasında ümumi resurslara girişin sinxronlaşdırılmasına kömək edən müxtəlif bloklama növləri mövcuddur:
- Mutex (Mutual Exclusion) — resursa eksklüziv giriş təmin edir. Yalnız bir iş parçacığı eyni zamanda mutex-i ələ keçirə bilər.
- Yenidən istifadə edilə bilən mutex — eyni iş parçacığının çoxsaylı dəfə bloklamasını təmin edir, öz-özünü bloklamadan.
- Oxuma-Yazma Bloklaması (Read-Write Lock) — bir neçə iş parçacığı resursu eyni vaxtda oxuya bilər, lakin yazma yalnız eksklüzivdir.
- Semafor — eyni zamanda resursa giriş edə biləcək iş parçacığı sayını məhdudlaşdırır.
- Spinlock (aktiv gözləmə) — iş parçacığı dövründə bloklamanın mövcud olub-olmadığını yoxlayır, gözləmə vəziyyətinə keçmədən.
Swift-də mutex istifadəsi nümunəsi:
let lock = NSLock()
func criticalSection() {
lock.lock()
// Kritik bölmə
lock.unlock()
}
Bloklama növünün seçimi vəzifədən və performans və təhlükəsizlik tələblərindən asılıdır.