Junior — Middle
Hansı vəziyyətlərdə iş parçalarının sinxronizasiyası üçün Semaphore mexanizmasından istifadə etmək məsləhətdir?
sobes.tech Süni İntellekt
AI-dan cavab
Semaphore (semafor) mexanizmi, müəyyən bir resursa və ya kritik bölməyə eyni vaxtda daxil olan iş parçacığı sayını məhdudlaşdırmaq üçün istifadə olunur.
Semaforu istifadə etmək məsləhətdir, məsələn:
- Eyni vaxtda həyata keçirilən əməliyyatların sayını məhdudlaşdırmaq üçün, məsələn, əlaqə hovuzuna və ya məhdud sayda fayla giriş.
- Sistemə yüklənmənin qarşısını almaq üçün paralelliyi idarə etmək.
- Bir neçə iş parçacığının resursun boşaldılmasını gözləməsi lazım olduqda sinxronizasiya.
iOS-da semaforlar çox vaxt asinxron tapşırıqları idarə etmək üçün istifadə olunur, məsələn, bir neçə əməliyyatın tamamlanmasını gözləmək və ya eyni vaxtda yerinə yetirilən tapşırıqların sayını məhdudlaşdırmaq.
Swift-də DispatchSemaphore istifadə nümunəsi:
let semaphore = DispatchSemaphore(value: 3) // maksimum 3 iş parçacığı eyni vaxtda
func accessResource() {
semaphore.wait() // sayacı azaldır, 0 olarsa, iş parçacığı bloklanır
// Resursla işləmək
print("İş parçacığı giriş aldı")
sleep(1) // işin simulyasiyası
semaphore.signal() // sayacı artırır, yer açır
}
for _ in 1...10 {
DispatchQueue.global().async {
accessResource()
}
}
Bu nümunədə, eyni vaxtda ən çox 3 iş parçacığı resursla işləyə bilər.